NumPy - 矩阵乘法
什么是矩阵乘法?
矩阵乘法是线性代数中的一种运算,涉及两个矩阵的乘法。它不仅仅是简单的元素乘法,而是遵循特定的数学规则。
在此运算中,第一个矩阵的行与第二个矩阵的列相乘,然后将结果相加形成一个新的矩阵。
矩阵乘法在物理学、计算机图形学和机器学习等各个领域都很有用。它是变换和线性方程组求解中的关键运算。
矩阵乘法的条件
在执行矩阵乘法之前,务必确保两个矩阵满足特定条件 -
- 第一个矩阵的列数必须等于第二个矩阵的行数。
- 结果矩阵的维度为:行数取自第一个矩阵,列数取自第二个矩阵。
例如,一个形状为 (2, 3) 的矩阵可以与一个形状为 (3, 4) 的矩阵相乘,得到一个形状为 (2, 4) 的矩阵。
矩阵乘法公式
矩阵乘法公式如下 -
对于形状为 (m, n) 的矩阵 A和形状为 (n, p) 的 B,则生成的矩阵 C 的形状为 (m, p),每个元素 cij 的计算公式如下:
cij = (aik * bkj),其中 i = 1 到 m,j = 1 到 p,k = 1 到 n
NumPy 中的矩阵乘法
在 NumPy 中,矩阵乘法可以使用多种方法执行 -
- 使用 * 运算符:此运算符可用于逐元素乘法,但应用于两个二维数组时也可用于矩阵乘法。
- 使用 @ 运算符(Python 3.5 及以上版本): @ 运算符专为矩阵乘法而设计,使代码更简洁易懂。
- 使用 np.dot() 函数:此函数计算两个数组的点积。对于二维数组,它执行矩阵乘法。
- 使用 np.matmul() 函数: 与 np.dot() 函数类似,此函数专门用于矩阵乘法。
NumPy 中的矩阵乘法示例
在本例中,我们将使用上述所有方法演示矩阵乘法 -
import numpy as np # 定义两个矩阵 matrix_1 = np.array([[1, 2], [3, 4]]) matrix_2 = np.array([[5, 6], [7, 8]]) # 使用 * 进行矩阵乘法 result_1 = matrix_1 * matrix_2 # 使用 @ 进行矩阵乘法 result_2 = matrix_1 @ matrix_2 # 使用 np.dot() 进行矩阵乘法 result_3 = np.dot(matrix_1, matrix_2) # 使用 np.matmul() 进行矩阵乘法 result_4 = np.matmul(matrix_1, matrix_2) print("矩阵乘法 (*): ", result_1) print("矩阵乘法 (@): ", result_2) print("矩阵乘法 (np.dot()): ", result_3) print("矩阵乘法 (np.matmul()): ", result_4)
以下是得到的输出 −
矩阵乘法 (*): [[ 5 12] [21 32]] 矩阵乘法 (@): [[19 22] [43 50]] 矩阵乘法 (np.dot()): [[19 22] [43 50]] 矩阵乘法 (np.matmul()): [[19 22] [43 50]]
在上面的输出中,你会看到使用不同方法进行矩阵乘法的结果相同,但方法不同。以下是每个结果的含义 -
- 矩阵乘法 (*): 它执行逐元素乘法,这与矩阵乘法不同。它将两个矩阵的对应元素相乘。
- 矩阵乘法 (@): 它遵循线性代数规则执行真正的矩阵乘法。它将第一个矩阵的行乘以第二个矩阵的列。
- 矩阵乘法 (np.dot()): np.dot() 函数计算两个矩阵的点积,对于二维数组,等于矩阵乘法。
- 矩阵乘法 (np.matmul()): 此函数的工作原理与 np.dot() 类似,但专为矩阵乘法而设计。
更大矩阵的矩阵乘法
让我们考虑一个更大的示例,其中我们有形状为 (2, 3) 和 (3, 4) 的矩阵,我们将它们相乘。结果矩阵的形状为 (2, 4)。代码如下:
import numpy as np matrix_1 = np.array([[1, 2, 3], [4, 5, 6]]) matrix_2 = np.array([[7, 8, 9, 10], [11, 12, 13, 14], [15, 16, 17, 18]]) result = np.matmul(matrix_1, matrix_2) print(result)
这里,结果矩阵的形状为 (2, 4),这与矩阵乘法的规则一致。
结果矩阵中的每个元素都是第一个矩阵的行与第二个矩阵的列对应元素的乘积之和。矩阵。
[[ 74 80 86 92] [173 188 203 218]]
实际应用
矩阵乘法是各种实际应用中的核心运算 −
- 机器学习:在机器学习中,尤其是在神经网络中,矩阵乘法用于计算网络各层中的激活值。网络的权重以矩阵表示,乘法有助于计算输出。
- 图形渲染:在计算机图形学中,矩阵乘法用于在空间中变换对象。变换矩阵与对象坐标相乘,可执行缩放、旋转或平移操作。
- 经济学:在经济学中,矩阵用于对线性方程组进行建模,并解决诸如供需模型之类的优化问题。