NumPy での要素ごとの乗算
このチュートリアルでは、Python で要素ごとの行列乗算を実行するためのさまざまな方法について説明します。要素ごとの行列乗算(アダマール積とも呼ばれます)では、最初の行列のすべての要素に、2 番目の行列の対応する要素が乗算されます。
要素ごとの行列乗算を実行する場合、両方の行列は同じ次元である必要があります。要素ごとの行列乗算 a*b = c の結果の行列 c は、常に a および b の次元と同じ次元になります。
次の方法を使用して、Python で要素ごとの乗算を実行できます。
Python で np.multiply() メソッドを使用したの行列の要素ごとの乗算
Python の NumPy ライブラリの np.multiply(x1, x2) メソッドは、入力として 2つの行列 x1 と x2 を取り、入力に対して要素ごとの乗算を実行し、結果の行列を入力として返します。
したがって、要素ごとの入力を実行するには、2つの行列を np.multiply() メソッドへの入力として渡す必要があります。以下のサンプルコードは、np.multiply() を使用して Python で 2つの行列の要素ごとの乗算を実行する方法を示しています。
import numpy as np
a1 = np.array([[12, 46, 23, 7, 2], [3, 5, 8, 3, 6]])
a2 = np.array([[15, 26, 2, 17, 22], [13, 8, 9, 3, 4]])
print(np.multiply(a1, a2))
出力:
[[ 180 1196 46 119 44]
[ 39 40 72 9 24]]
np.multiply() メソッドを使用して、行列の特定の行、列、または部分行列の要素ごとの乗算を実行することもできます。行列の特定の行、列、または部分行列を np.multiply() メソッドに渡す必要があります。要素ごとの行列乗算と同様に、乗算の第 1 オペランドと第 2 オペランドとして渡される行、列、または部分行列のサイズも同じである必要があります。
以下のサンプルコードは、Python で 2つの行列の行、列、または部分行列の要素ごとの乗算を実装する方法を示しています。
import numpy as np
a1 = np.array([[12, 46, 23, 7, 2], [3, 5, 8, 3, 6]])
a2 = np.array([[15, 26, 2, 17, 22], [13, 8, 9, 3, 4]])
print(np.multiply(a1[0, :], a2[1, :]))
print(np.multiply(a1[1, :], a2[0, :]))
print(np.multiply(a1[:, 3], a2[:, 1]))
出力:
[156 368 207 21 8]
[ 45 130 16 51 132]
[182 24]
Python で*演算子を使用したの行列の要素ごとの乗算
行列で*演算子を使用して、要素ごとの行列乗算を実行することもできます。*演算子を Python の行列で使用すると、要素ごとの行列乗算の結果の行列が返されます。
以下のサンプルコードは、*演算子を使用して Python で要素ごとの行列乗算を実行する方法を示しています。
a1 = np.array([[12, 46, 23, 7, 2], [3, 5, 8, 3, 6]])
a2 = np.array([[15, 26, 2, 17, 22], [13, 8, 9, 3, 4]])
print(a1 * a2)
出力:
[[ 180 1196 46 119 44]
[ 39 40 72 9 24]]
*演算子を使用して、Python で次の方法で、行列の行、列、および部分行列の要素ごとの乗算を実行することもできます。
import numpy as np
a1 = np.array([[12, 46, 23, 7, 2], [3, 5, 8, 3, 6]])
a2 = np.array([[15, 26, 2, 17, 22], [13, 8, 9, 3, 4]])
print(a1[0, :] * a2[1, :])
print(a1[1, :] * a2[0, :])
print(a1[:, 3] * a2[:, 1])
出力:
[156 368 207 21 8]
[ 45 130 16 51 132]
[182 24]