1

ブロードキャストに問題があります。可能であれば、for ループを使用せずに、形状 x、y の 4 つの異なる配列の要素を 2x2 行列に割り当てられるようにしたいと考えています。

a = np.arange(6).reshape(2,3)
b = np.arange(6,12).reshape(2,3)
c = np.arange(12,18).reshape(2,3)
d = np.arange(18,24).reshape(2,3)
x = np.array([[a, b], [c, d]])

明らかにこれは機能しませんが、x に次の配列を出力してもらいたいです。

[   [
    [[0,6], [12, 18]], 
    [[1, 7], [13, 19]],
    [[2, 8], [14, 20]], 
    ],

    [
    [[3, 9], [15, 21]],
    [[4, 10], [16, 22]],
    [[5, 11], [17, 23]]
    ]
]
4

3 に答える 3

1

最も簡単な方法:x =np.array([[a, b], [c, d]]) ただ定義し た後y=np.rollaxis(np.rollaxis(x,-1),-1)。x 上のビューなので、コピーは行われません。

別の方法: 自分で新しい寸法を作成します:

ac =np.concatenate((a[:,:,np.newaxis],c[:,:,np.newaxis]),axis=-1)
bd =np.concatenate((b[:,:,np.newaxis],d[:,:,np.newaxis]),axis=-1)
abcd =np.concatenate((ac[:,:,:,np.newaxis],bd[:,:,:,np.newaxis]),axis=-1)

それで

In [3]: abcd
Out[3]: array([[[[ 0,  6],
     [12, 18]],

    [[ 1,  7],
     [13, 19]],

    [[ 2,  8],
     [14, 20]]],


   [[[ 3,  9],
     [15, 21]],

    [[ 4, 10],
     [16, 22]],

    [[ 5, 11],
     [17, 23]]]])
于 2016-01-15T16:37:50.383 に答える