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]