29

私はこのような3Dマトリックスを持っています

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)したり、余分な次元を追加して再形成したりせずに行う方法はありますか(これが機能するかどうかはわかりません)?

ありがとう、

4

1 に答える 1

41
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]])

配列をブロックに再形成/非形成するためのより一般的な関数をここに投稿しました。

于 2012-12-21T12:56:55.233 に答える