NumPy 中的按元素矩陣乘法
Muhammad Waiz Khan
2023年1月30日
本教程將介紹在 Python 中執行按元素矩陣乘法的各種方法。在逐元素矩陣乘法(也稱為 Hadamard 積)中,第一個矩陣的每個元素都乘以第二個矩陣的對應元素。
在執行逐元素矩陣乘法時,兩個矩陣的維數應相同。元素級矩陣乘法 a*b = c
的結果矩陣 c
始終與 a
和 b
具有相同的尺寸。
我們可以使用以下方法在 Python 中執行逐元素乘法:
在 Python 中使用 np.multiply()
方法進行矩陣的元素乘法
Python NumPy
庫的 np.multiply(x1, x2)
方法將兩個矩陣 x1
和 x2
作為輸入,對輸入執行逐元素相乘,然後返回所得矩陣作為輸入。
因此,我們需要將這兩個矩陣作為輸入傳遞給 np.multiply()
方法,以執行逐元素輸入。下面的示例程式碼演示瞭如何使用 np.multiply()
在 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(np.multiply(a1, a2))
輸出:
[[ 180 1196 46 119 44]
[ 39 40 72 9 24]]
我們還可以使用 np.multiply()
方法對矩陣的特定行,列或子矩陣進行逐元素乘法。我們需要將矩陣的特定行,列或子矩陣傳遞給 np.multiply()
方法。像按元素進行矩陣乘法一樣,作為乘法的第一個和第二個運算元傳遞的行,列或子矩陣的大小也應該相同。
下面的示例程式碼演示瞭如何在 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(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]