NumPy 中的按元素矩陣乘法

Muhammad Waiz Khan 2023年1月30日
  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