重新排列4d numpy阵列

2024-09-27 02:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个4d numpy数组,它代表一个带有3d实例的数据集。 假设数组的形状是(32, 32, 3, 73257)。在

如何将数组的形状改为(73257, 32, 32, 3)?在

---问题更新 似乎rollaxis和transpose都能做到这一点。在

感谢你的回复!在


Tags: 数据实例numpy代表数组形状transposerollaxis
2条回答

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的轴中的哪一个位于第二位或第三位:

^{pr2}$

也给出了所需形状的数组,但与前一个不同。在

看起来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

相关问题 更多 >

    热门问题