w が互換性のある次元の 1D numpy 配列で、M が 4D 配列である次のコードがあります。
i = 0
for weight in w:
M[:, :, i, :] *= weight
i += 1
同じ効果を達成するためのより良い方法はありますか?
w が互換性のある次元の 1D numpy 配列で、M が 4D 配列である次のコードがあります。
i = 0
for weight in w:
M[:, :, i, :] *= weight
i += 1
同じ効果を達成するためのより良い方法はありますか?
配列であるの要素M
とともにスケーリングしています。したがって、で 2D 配列に拡張する必要があります。これにより、 で軸が整列します。次に、これら 2 つの配列間で要素単位の乗算を実行して、ベクトル化されたソリューションを取得します。次のようにします。axis=2
w
1D
w
np.newaxis/None
extended version of w
M
broadcasting
M *= w[:,None]
axis=2
ofM
の長さが の要素数よりも大きい場合、次のように、乗算する前にw
に沿って範囲を選択する必要があります-axis=2
M
M[...,np.arange(w.size),:] *= w[:,None]