3d Numpy数组到2d

时间:2012-12-21 12:44:53

标签: python numpy multidimensional-array

我有一个像这样的三维矩阵

arange(16).reshape((4,2,2))
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]])

有没有一种方法可以在没有明确地hstacking(和/或vstacking)它们或添加额外的维度和重塑(不确定这会起作用)的情况下做什么?

谢谢,

1 个答案:

答案 0 :(得分:37)

In [27]: x = np.arange(16).reshape((4,2,2))

In [28]: x.reshape(2,2,2,2).swapaxes(1,2).reshape(4,-1)
Out[28]: 
array([[ 0,  1,  4,  5],
       [ 2,  3,  6,  7],
       [ 8,  9, 12, 13],
       [10, 11, 14, 15]])

我已为reshaping/unshaping arrays into blocks, here发布了更多常规功能。