将4D numpy阵列重塑为2D

将4D numpy阵列重塑为2D,numpy,Numpy,我使用numpy创建了一个(5,5,5,5)矩阵,它看起来像: [[[[0.64 0.16 0. 0. 0. ] [0. 0.64 0.16 0. 0. ] [0. 0. 0.64 0.16 0. ] [0. 0. 0. 0.64 0.16] [0. 0. 0. 0. 0.8 ]] [[0.16 0.04 0. 0. 0. ] [0. 0.16 0.04 0. 0. ] [0.

我使用numpy创建了一个(5,5,5,5)矩阵,它看起来像:

[[[[0.64 0.16 0.   0.   0.  ]
   [0.   0.64 0.16 0.   0.  ]
   [0.   0.   0.64 0.16 0.  ]
   [0.   0.   0.   0.64 0.16]
   [0.   0.   0.   0.   0.8 ]]

  [[0.16 0.04 0.   0.   0.  ]
   [0.   0.16 0.04 0.   0.  ]
   [0.   0.   0.16 0.04 0.  ]
   [0.   0.   0.   0.16 0.04]
   [0.   0.   0.   0.   0.2 ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]]


 [[[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.64 0.16 0.   0.   0.  ]
   [0.   0.64 0.16 0.   0.  ]
   [0.   0.   0.64 0.16 0.  ]
   [0.   0.   0.   0.64 0.16]
   [0.   0.   0.   0.   0.8 ]]

  [[0.16 0.04 0.   0.   0.  ]
   [0.   0.16 0.04 0.   0.  ]
   [0.   0.   0.16 0.04 0.  ]
   [0.   0.   0.   0.16 0.04]
   [0.   0.   0.   0.   0.2 ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]]


 [[[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.64 0.16 0.   0.   0.  ]
   [0.   0.64 0.16 0.   0.  ]
   [0.   0.   0.64 0.16 0.  ]
   [0.   0.   0.   0.64 0.16]
   [0.   0.   0.   0.   0.8 ]]

  [[0.16 0.04 0.   0.   0.  ]
   [0.   0.16 0.04 0.   0.  ]
   [0.   0.   0.16 0.04 0.  ]
   [0.   0.   0.   0.16 0.04]
   [0.   0.   0.   0.   0.2 ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]]


 [[[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.64 0.16 0.   0.   0.  ]
   [0.   0.64 0.16 0.   0.  ]
   [0.   0.   0.64 0.16 0.  ]
   [0.   0.   0.   0.64 0.16]
   [0.   0.   0.   0.   0.8 ]]

  [[0.16 0.04 0.   0.   0.  ]
   [0.   0.16 0.04 0.   0.  ]
   [0.   0.   0.16 0.04 0.  ]
   [0.   0.   0.   0.16 0.04]
   [0.   0.   0.   0.   0.2 ]]]


 [[[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]
   [0.   0.   0.   0.   0.  ]]

  [[0.8  0.2  0.   0.   0.  ]
   [0.   0.8  0.2  0.   0.  ]
   [0.   0.   0.8  0.2  0.  ]
   [0.   0.   0.   0.8  0.2 ]
   [0.   0.   0.   0.   1.  ]]]]
如何有效地将其转换为(25,25)矩阵,其第一行是前五(5,5)个块的第一行的串联,第二行是第一(5,5)个块的第二行的串联,依此类推?例如,给定我的输入矩阵,输出矩阵的第一行应为:

[0.64 0.16  0.   0.   0.  0.16  0.04   0.   0.   0.   0.   0.   
0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   
0.  ]
第六行应该是第六到第十个5乘5块的第一行的组合,即:

[0.   0.   0.   0.   0.  0.64  0.16   0.   0.   0.   0.16   
0.04   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   
0.  0.  ]
我尝试了numpy.Reforme(输入,(25,25)),但没有得到我想要的结果。感谢您的帮助

在重塑之前,使用
swapax
(或
transpose
)重新排列轴的顺序:

In [48]: y = x.swapaxes(1,2).reshape(25,25)

In [49]: y[0]
Out[49]: 
array([0.64, 0.16, 0.  , 0.  , 0.  , 0.16, 0.04, 0.  , 0.  , 0.  , 0.  ,
       0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
       0.  , 0.  , 0.  ])

In [50]: y[5]
Out[50]: 
array([0.  , 0.  , 0.  , 0.  , 0.  , 0.64, 0.16, 0.  , 0.  , 0.  , 0.16,
       0.04, 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
       0.  , 0.  , 0.  ])

这正是我想要的。谢谢