1. ホーム
  2. python

[解決済み] numpy配列の横方向の乗算

2022-10-19 14:13:41

質問

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

[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でそれを行うためのエレガントな方法があるかどうか知っていますか? どうもありがとうございました。 アレックス

どのように解決するのですか?

普通に掛け算をします。

>>> 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]])