我有以下形状(3,2,3)的3d numpy数组。

[
 [[ 0  1  2]
  [ 3  4  5]]

 [[ 6  7  8]
  [ 9 10 11]]

 [[12 13 14]
  [15 16 17]]
             ]


但是,我需要按照以下顺序重塑为(3,3,2):

[
 [[ 0  3]
  [ 6  9]
  [12 15]]

 [[ 1  4]
  [ 7 10]
  [13 16]]

 [[ 2  5]
  [ 8 11]
  [14 17]]
          ]


我目前正在使用Jupyter进行大量的反复试验。

感谢您的任何建议!

最佳答案

要定义原始数组,可以使用:

np.arange(18).reshape(3,2,3)


正如@Divakar在评论中提到的那样,您可以使用:

np.arange(18).reshape(3,2,3).transpose(2,0,1)


获得理想的结果。

来自np.transpose documentation


  轴:默认情况下,反转尺寸,否则对轴进行排列
  根据给定的值。


2,0,1是从(3,2,3)形状变为(3,3,2)所需的排列。还将(3400, 7, 100)形状转换为(100, 3400, 7)

另一种方法是使用np.rollaxis(来自@Divakar的另一个提示):

np.rollaxis(np.arange(18).reshape(3,2,3),2)

关于python - 将Numpy阵列从(3、2、3)重塑为(3、3、2),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45062921/

10-09 23:15