3

w が互換性のある次元の 1D numpy 配列で、M が 4D 配列である次のコードがあります。

i = 0
for weight in w:
    M[:, :, i, :] *= weight
    i += 1

同じ効果を達成するためのより良い方法はありますか?

4

2 に答える 2

3

配列であるの要素Mとともにスケーリングしています。したがって、で 2D 配列に拡張する必要があります。これにより、 で軸が整列します。次に、これら 2 つの配列間で要素単位の乗算を実行して、ベクトル化されたソリューションを取得します。次のようにします。axis=2w1Dwnp.newaxis/Noneextended version of wMbroadcasting

M *= w[:,None]

axis=2ofMの長さが の要素数よりも大きい場合、次のように、乗算する前にwに沿って範囲を選択する必要があります-axis=2M

M[...,np.arange(w.size),:] *= w[:,None]
于 2016-02-08T11:16:55.747 に答える