NumPy配列での乗算 質問する

NumPy配列での乗算 質問する

2次元配列の各項を1次元配列の対応する項で乗算しようとしています。これは、図に示すように、すべての列を1次元配列で乗算したい場合、非常に簡単です。numpy.乗算関数です。しかし、私はその逆、つまり行の各項を掛け合わせたいのです。言い換えれば、私は次のものを掛け合わせたいのです。

[1,2,3]   [0]
[4,5,6] * [1]
[7,8,9]   [2]

そして

[0,0,0]
[4,5,6]
[14,16,18]

しかし、代わりに私は

[0,2,6]
[0,5,12]
[0,8,18]

numpy でそれをエレガントに行う方法があるかどうか知っている人はいませんか? ありがとう、アレックス

ベストアンサー1

あなたが示したような通常の乗算​​:

>>> import numpy as np
>>> m = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> c = np.array([0,1,2])
>>> m * c
array([[ 0,  2,  6],
       [ 0,  5, 12],
       [ 0,  8, 18]])

軸を追加すると、希望どおりに乗算されます。

>>> m * c[:, np.newaxis]
array([[ 0,  0,  0],
       [ 4,  5,  6],
       [14, 16, 18]])

2 回転置することもできます。

>>> (m.T * c).T
array([[ 0,  0,  0],
       [ 4,  5,  6],
       [14, 16, 18]])

おすすめ記事