2024-09-27 02:15:25 发布
网友
我有一个4d numpy数组,它代表一个带有3d实例的数据集。 假设数组的形状是(32, 32, 3, 73257)。在
(32, 32, 3, 73257)
如何将数组的形状改为(73257, 32, 32, 3)?在
(73257, 32, 32, 3)
---问题更新 似乎rollaxis和transpose都能做到这一点。在
感谢你的回复!在
np.transpose函数正是您想要的,您可以传递一个轴参数来控制要交换哪个轴:
np.transpose
a = np.empty((32, 32, 3, 73257)) b = np.transpose(a, (3, 0, 1, 2))
b的轴是a轴的排列版本:b的0轴是a的第3个轴,b的轴1是a的第0个轴,等等。。。在
这样,您可以指定尺寸为32的轴中的哪一个位于第二位或第三位:
也给出了所需形状的数组,但与前一个不同。在
看起来np.rollaxis(arr, axis=-1)会做你想做的事。示例:
np.rollaxis(arr, axis=-1)
>>> arr = np.empty(32, 32, 3, 73257) >>> arr2 = np.rollaxis(arr, axis=-1) >>> arr2.shape (73257, 32, 32, 3)
这将使arr[i,j,k,l] == arr2[l,i,j,k]成为所有ijkl
arr[i,j,k,l] == arr2[l,i,j,k]
ijkl
np.transpose
函数正是您想要的,您可以传递一个轴参数来控制要交换哪个轴:b的轴是a轴的排列版本:b的0轴是a的第3个轴,b的轴1是a的第0个轴,等等。。。在
这样,您可以指定尺寸为32的轴中的哪一个位于第二位或第三位:
^{pr2}$也给出了所需形状的数组,但与前一个不同。在
看起来
np.rollaxis(arr, axis=-1)
会做你想做的事。示例:这将使
arr[i,j,k,l] == arr2[l,i,j,k]
成为所有ijkl
相关问题 更多 >
编程相关推荐