NumPy 中的按元素矩陣乘法

Muhammad Waiz Khan 2023年1月30日 2021年3月21日
  1. 在 Python 中使用 np.multiply() 方法進行矩陣的元素乘法
  2. 在 Python 中使用*運算子對矩陣進行元素明智的乘法
NumPy 中的按元素矩陣乘法

本教程將介紹在 Python 中執行按元素矩陣乘法的各種方法。在逐元素矩陣乘法(也稱為 Hadamard 積)中,第一個矩陣的每個元素都乘以第二個矩陣的對應元素。

在執行逐元素矩陣乘法時,兩個矩陣的維數應相同。元素級矩陣乘法 a*b = c 的結果矩陣 c 始終與 ab 具有相同的尺寸。

我們可以使用以下方法在 Python 中執行逐元素乘法:

在 Python 中使用 np.multiply() 方法進行矩陣的元素乘法

Python NumPy 庫的 np.multiply(x1, x2) 方法將兩個矩陣 x1x2 作為輸入,對輸入執行逐元素相乘,然後返回所得矩陣作為輸入。

因此,我們需要將這兩個矩陣作為輸入傳遞給 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]

相關文章 - NumPy Matrix