将4d numpy数组重塑为2d数组,同时保留数组位置

时间:2013-10-29 20:12:41

标签: python numpy

我有一个形状为(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绘制它,目前卡住了。我觉得很容易做到,我还没想出来。

1 个答案:

答案 0 :(得分:6)

没关系,我明白了。 np.swapaxes(1, 2)是我需要的缺失部分。

答案只是做mat.swapaxes(1, 2).reshape(N*Q, N*Q)

感到愚蠢的发布而不试图弄清楚自己太长时间,但我会把它留下来,以便其他人可以从中受益。