1

形状の例を含む2D numpy配列があります:

>>> a.shape
(48, 160)

そして、要素間または各行間で単純な操作を行いたいのですa[0] - a[1]が、他のすべての行に対してすべての行に対してです。

ループを使用して行を反復するだけでそれを行う方法を知っていますが、ループforを使用せずにこれを行うことができるnumpyスライス固有の命令があるかどうか疑問に思っていましたfor

4

1 に答える 1

2

これを行うにはブロードキャスト マジックを使用できます。

import numpy as np
a = np.arange(12).reshape((4, 3))
b = np.arange(15).reshape((5, 3))
diff = a[np.newaxis, :, :] - b[:, np.newaxis, :]
diff.shape
# (5, 4, 3)

これは良いブロードキャスト チュートリアルです。この場合、a (1, 4, 3) と b (5, 1, 3) を作成すると、a と b のすべての行ペアの差である (5, 4, 3) という結果が得られます。

于 2012-11-08T19:02:41.683 に答える