Python 重新排列4d numpy阵列

Python 重新排列4d numpy阵列,python,arrays,numpy,Python,Arrays,Numpy,我有一个4d numpy数组,它表示具有3d实例的数据集。 假设数组的形状是32,32,373257 如何将阵列的形状更改为73257、32、32、3 --问题更新 似乎rollaxis和transpose都能做到这一点 谢谢你的回复 看起来np.rollaxisarr,axis=-1将执行您想要的操作。例如: >>> arr = np.empty(32, 32, 3, 73257) >>> arr2 = np.rollaxis(arr, axis=-1) &

我有一个4d numpy数组,它表示具有3d实例的数据集。 假设数组的形状是32,32,373257

如何将阵列的形状更改为73257、32、32、3

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

谢谢你的回复

看起来np.rollaxisarr,axis=-1将执行您想要的操作。例如:

>>> arr = np.empty(32, 32, 3, 73257)
>>> arr2 = np.rollaxis(arr, axis=-1)
>>> arr2.shape
(73257, 32, 32, 3)
这将使所有ijkl的arr[i,j,k,l]==arr2[l,i,j,k]看起来像np.rollaxisarr,axis=-1将执行您想要的操作。例如:

>>> arr = np.empty(32, 32, 3, 73257)
>>> arr2 = np.rollaxis(arr, axis=-1)
>>> arr2.shape
(73257, 32, 32, 3)
这将使所有ijkl的arr[i,j,k,l]==arr2[l,i,j,k]np.transpose函数完全按照您的要求执行,您可以传递一个轴参数,该参数控制要交换的轴:

a = np.empty((32, 32, 3, 73257))
b = np.transpose(a, (3, 0, 1, 2))
b轴是a轴的置换版本:b轴0是a的第三轴,b轴1是a的第0轴,等等

这样,您就可以指定要将大小为32的轴中的哪一个放在第二位或第三位:

b = np.transpose(a, (3, 1, 0, 2))
还提供所需形状的数组,但与上一个不同。

np.transpose函数完全按照您的要求执行,您可以传递一个轴参数,该参数控制要交换的轴:

a = np.empty((32, 32, 3, 73257))
b = np.transpose(a, (3, 0, 1, 2))
b轴是a轴的置换版本:b轴0是a的第三轴,b轴1是a的第0轴,等等

这样,您就可以指定要将大小为32的轴中的哪一个放在第二位或第三位:

b = np.transpose(a, (3, 1, 0, 2))

还提供了所需形状的数组,但与上一个不同。

相关-如果使用3、0、1、2,则转置也可以在这里工作。我会尽快更正我的回复。如果你使用3,0,1,2,相关的转置也会在这里工作。你是对的。我会尽快更正我的答复。