Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从3D生成2D阵列,使(100,50,20)成为(100,100)_Python_Arrays_Numpy_Numpy Ndarray - Fatal编程技术网

Python 如何从3D生成2D阵列,使(100,50,20)成为(100,100)

Python 如何从3D生成2D阵列,使(100,50,20)成为(100,100),python,arrays,numpy,numpy-ndarray,Python,Arrays,Numpy,Numpy Ndarray,我想将三维阵列(x,y,z)的两个维度(y,z)合并为一个维度。y中的每个对应值都应复制到z旁边 例如,我有一个视频的100帧,坐标是3维中的15个关键点。阵列形状为(100,15,3)。我希望输出为(100,45),将y和z合并为15x3。只需使用numpy。重塑。它可用于选择性地展平尺寸标注 import numpy as np mat_3d = np.random.randn(2, 3, 4) mat_2d = mat_3d.reshape((mat_3d.shape[0], -1))

我想将三维阵列(x,y,z)的两个维度(y,z)合并为一个维度。y中的每个对应值都应复制到z旁边


例如,我有一个视频的100帧,坐标是3维中的15个关键点。阵列形状为(100,15,3)。我希望输出为(100,45),将y和z合并为15x3。

只需使用
numpy。重塑
。它可用于选择性地展平尺寸标注

import numpy as np

mat_3d = np.random.randn(2, 3, 4)
mat_2d = mat_3d.reshape((mat_3d.shape[0], -1))
print(mat_3d)
print(mat_2d)
在本例中,我使用
(mat_3d.shape[0],-1)
作为
重塑
的参数。这意味着第一个维度必须保持不变,但所有其他维度必须变平(-1是额外的糖,可以让
numpy
推断出正确的大小,但使用
np.prod(mat_3d.shape[1:])
将是相同的)。
在这种情况下,Numpy首先获取最后一个轴(这里是z)上的值,然后是第二个到最后一个轴(这里是y)上的值,以此类推,在更高的维度上。

您有哪种格式的数据?numpy Ndaray还是list?这不是很清楚。您希望减少数据/维度,但没有指定如何减少。没有唯一的解决方案。请添加一段您已经处理过的代码,包括输入和输出在内的示例已更新了问题的描述。希望这能让事情变得更清楚。如果你需要更多的信息,请告诉我。谢谢