首页 > 解决方案 > 如何通过重新排序重塑 numpy 数组?

问题描述

我有一个 1 x 2 x 3 数组:

>>> a = np.array([[[1,2,3],[4,5,6]]])
>>> a
array([[[1, 2, 3],
        [4, 5, 6]]])
>>> a.shape
(1, 2, 3)

我想将它重塑为(3,1,2),但是沿着原始暗淡 3 的元素现在沿着暗淡 1。我希望结果看起来像这样:

>>> new_a
array([[[1, 4]],
       [[2, 5]],
       [[3, 6]]])

当我只使用 reshape 时,我得到了正确的形状,但元素的顺序相同,而不是我想要的:

>>> a.reshape((3,1,2))
array([[[1, 2]],
       [[3, 4]],
       [[5, 6]]])

我怎样才能做到这一点?

标签: pythonnumpy

解决方案


只需使用np.transpose-

a.transpose(2,0,1)

样品运行 -

In [347]: a
Out[347]: 
array([[[1, 2, 3],
        [4, 5, 6]]])

In [348]: a.transpose(2,0,1)
Out[348]: 
array([[[1, 4]],

       [[2, 5]],

       [[3, 6]]])

或者 :

np.moveaxis-

np.moveaxis(a,2,0)

np.rollaxis-

np.rollaxis(a,2,0)

推荐阅读