Python 中@ 矩阵乘法运算符详细讲解
在 Python 中,@
是矩阵乘法运算符,它用于矩阵与矩阵之间的乘法运算,也可以用于矩阵与向量之间的乘法。它是在 Python 3.5 中引入的,用来专门处理线性代数中的矩阵乘法运算。
1.基本用法
@
运算符的作用等价于 numpy 中的 np.dot()
或 np.matmul()
函数。
例如:
import numpy as np# 定义两个矩阵A = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])# 矩阵乘法C = A @ Bprint(C)
输出:
[[19 22] [43 50]]
2.与标量运算不同
如果直接使用 *
,表示逐元素相乘(Hadamard 乘积),这是按元素位置逐一相乘的结果,而不是矩阵乘法:
D = A * Bprint(D)
输出:
[[ 5 12] [21 32]]
3. 用于矩阵与向量
@
运算符也可以用于矩阵与向量的乘法:
# 定义矩阵和向量A = np.array([[1, 2], [3, 4]])v = np.array([5, 6])# 矩阵与向量乘法result = A @ vprint(result)
输出:
[17 39]
具体解释:
4.常见错误与注意事项
维度不匹配:矩阵乘法要求左矩阵的列数等于右矩阵的行数,否则会报错。例如:
A = np.array([[1, 2], [3, 4]])B = np.array([[5, 6]])C = A @ B # 会报错,因为 A 是 (2x2),B 是 (1x2)
5.总结
@
是矩阵乘法运算符,遵循线性代数规则,用于矩阵-矩阵、矩阵-向量的乘法。- 与逐元素乘法 (
*
) 不同,@
是针对矩阵的逻辑运算。 - 推荐与 NumPy 一起使用,用于高效的线性代数计算。