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