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]