NumPy - 矩阵乘法



什么是矩阵乘法?

矩阵乘法是线性代数中的一种运算,涉及两个矩阵相乘。它不仅仅是简单的元素级乘法,而是遵循特定的数学规则。

在此运算中,第一个矩阵的行与第二个矩阵的列相乘,并将结果相加以形成一个新的矩阵。

矩阵乘法在物理学、计算机图形学和机器学习等各个领域都很有用。它是变换和求解线性方程组的关键运算。

矩阵乘法的条件

在执行矩阵乘法之前,务必确保两个矩阵满足某些条件:

  • 第一个矩阵的列数必须等于第二个矩阵的行数。
  • 结果矩阵的维度将取自第一个矩阵的行数和第二个矩阵的列数。

例如,形状为 (2, 3) 的矩阵可以乘以形状为 (3, 4) 的矩阵,得到形状为 (2, 4) 的矩阵。

矩阵乘法公式

矩阵乘法的公式如下:

对于形状为 (m, n) 的矩阵 **A** 和形状为 (n, p) 的矩阵 **B**,结果矩阵 **C** 将具有形状 (m, p),并且每个元素 **cij** 由以下公式计算:

cij = Σ (aik * bkj) where i = 1 to m, j = 1 to p, and k = 1 to n

NumPy 中的矩阵乘法

在 NumPy 中,可以使用多种方法执行矩阵乘法:

  • **使用 * 运算符:**此运算符可用于元素级乘法,但当应用于两个二维数组时,也可用于矩阵乘法。
  • **使用 @ 运算符(Python 3.5 及更高版本):**@ 运算符专为矩阵乘法而设计,使代码更简洁易懂。
  • **使用 np.dot() 函数:**此函数计算两个数组的点积。对于二维数组,它执行矩阵乘法。
  • **使用 np.matmul() 函数:**与 np.dot() 函数类似,此函数专门为矩阵乘法而设计。

NumPy 中矩阵乘法的示例

在此示例中,我们将演示如何使用上述所有方法进行矩阵乘法:

import numpy as np

# Define two matrices
matrix_1 = np.array([[1, 2], [3, 4]])
matrix_2 = np.array([[5, 6], [7, 8]])

# Matrix multiplication using *
result_1 = matrix_1 * matrix_2

# Matrix multiplication using @
result_2 = matrix_1 @ matrix_2

# Matrix multiplication using np.dot()
result_3 = np.dot(matrix_1, matrix_2)

# Matrix multiplication using np.matmul()
result_4 = np.matmul(matrix_1, matrix_2)

print("Matrix Multiplication (*):\n", result_1)
print("Matrix Multiplication (@):\n", result_2)
print("Matrix Multiplication (np.dot()):\n", result_3)
print("Matrix Multiplication (np.matmul()):\n", result_4)

以下是获得的输出:

Matrix Multiplication (*):
[[ 5 12]
 [21 32]]
Matrix Multiplication (@):
[[19 22]
 [43 50]]
Matrix Multiplication (np.dot()):
[[19 22]
 [43 50]]
Matrix Multiplication (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]]

现实世界中的应用

矩阵乘法是各种现实世界应用中的核心运算:

  • **机器学习:**在机器学习中,尤其是在神经网络中,矩阵乘法用于计算网络层中的激活。网络的权重表示为矩阵,乘法有助于计算输出。
  • **图形渲染:**在计算机图形学中,矩阵乘法用于变换空间中的对象。变换矩阵与对象的坐标相乘以执行缩放、旋转或平移。
  • **经济学:**在经济学中,矩阵用于对线性方程组进行建模并解决诸如供求模型之类的优化问题。
广告

© . All rights reserved.