我有一个形状为(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]
(这是我不想要的)。我如何使用reshape或rollaxis或类似的东西来重塑这个数组?我最终想用imshow
绘制它,目前卡住了。我觉得很容易做到,我还没想出来。
答案 0 :(得分:6)
没关系,我明白了。 np.swapaxes(1, 2)
是我需要的缺失部分。
答案只是做mat.swapaxes(1, 2).reshape(N*Q, N*Q)
。
感到愚蠢的发布而不试图弄清楚自己太长时间,但我会把它留下来,以便其他人可以从中受益。