形状の例を含む2D numpy配列があります:
>>> a.shape
(48, 160)
そして、要素間または各行間で単純な操作を行いたいのですa[0] - a[1]
が、他のすべての行に対してすべての行に対してです。
ループを使用して行を反復するだけでそれを行う方法を知っていますが、ループfor
を使用せずにこれを行うことができるnumpyスライス固有の命令があるかどうか疑問に思っていましたfor
これを行うにはブロードキャスト マジックを使用できます。
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) という結果が得られます。