将4D numpy阵列重塑为2D
我使用numpy创建了一个(5,5,5,5)矩阵,它看起来像:将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.
[[[[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. ])
这正是我想要的。谢谢