NumPy 中的按元素矩陣乘法
Muhammad Waiz Khan
2023年1月30日
2021年3月21日
本教程將介紹在 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]