我有一个形状(N, N, Q, Q)
的 4 维 numpy 数组。所以给定一个行和列索引(i, j)
,mat[i,j]
是一个QxQ
矩阵。 我想重塑这个数组以塑造(N*Q, N*Q)
这样
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])
转到
array([[ 0., 1., 4., 5.],
[ 2., 3., 6., 7.],
[ 8., 9., 12., 13.],
[ 10., 11., 14., 15.]])
你可以看到mat[0,0]
去new_mat[0:2, 0:2]
. 目前mat.reshape(N*Q, N*Q)
需要mat[0,0]
才能new_mat[0:4, 0]
(这是我不想要的)。 如何使用整形或滚动轴或类似的东西来重塑此数组? 我最终想用imshow
绘制它,目前卡住了。 我认为这很容易做到,只是我还没有弄清楚。
关系,我想通了。 np.swapaxes(1, 2)
是我需要的缺失部分。
答案就是做mat.swapaxes(1, 2).reshape(N*Q, N*Q)
.
在没有试图自己弄清楚太长时间的情况下发布它感到愚蠢,但我会把它留在那里,以便其他人可以从中受益。