- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 创建和操作数组
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 遍历数组
- NumPy - 数组重塑
- NumPy - 连接数组
- NumPy - 堆叠数组
- NumPy - 分割数组
- NumPy - 展平数组
- NumPy - 转置数组
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组轴
- NumPy - 字节交换
- NumPy - 复制和视图
- NumPy - 元素级数组比较
- NumPy - 过滤数组
- NumPy - 连接数组
- NumPy - 排序、搜索和计数函数
- NumPy - 搜索数组
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高级操作
- NumPy - 数组排序
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 向数组追加值
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 填充缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
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]]
现实世界中的应用
矩阵乘法是各种现实世界应用中的核心运算:
- **机器学习:**在机器学习中,尤其是在神经网络中,矩阵乘法用于计算网络层中的激活。网络的权重表示为矩阵,乘法有助于计算输出。
- **图形渲染:**在计算机图形学中,矩阵乘法用于变换空间中的对象。变换矩阵与对象的坐标相乘以执行缩放、旋转或平移。
- **经济学:**在经济学中,矩阵用于对线性方程组进行建模并解决诸如供求模型之类的优化问题。
广告