numpy知识整理
一、矩阵乘法:矩阵 × 矩阵、矩阵 × 向量
矩阵乘法是线性代数中最核心的运算之一,在 NumPy 中需要严格区分数学矩阵乘法(点积)和逐元素乘法,二者的使用场景和规则完全不同。
示例:矩阵 X 矩阵
importnumpyasnp A=np.array([[1,2,3],[4,5,6]])# shape: (2, 3)B=np.array([[7,8],[9,10],[11,12]])# shape: (3, 2)C1=A @ B C2=np.dot(A,B)C3=np.matmul(A,B)print("矩阵乘法结果:\n",C1)示例:矩阵 X 向量
# 定义矩阵 A(2,3) 和向量 v(3,)A=np.array([[1,2,3],[4,5,6]])v=np.array([1,2,3])# shape: (3,)res=A @ vprint("矩阵×向量结果:",res)# 输出: [14 32]二、矩阵加法
矩阵加法是元素级运算,规则非常简单:
- 两个矩阵的形状必须完全相同(行数、列数都一致),对应位置的元素相加;
- 若形状不同,需满足广播规则(后文详细说明),否则会报错;
- 符号:
+运算符 /np.add()。
示例:
importnumpyasnp A=np.array([[1,2],[3,4]])B=np.array([[5,6],[7,8]])# 矩阵加法C=A+B# 等价于 C = np.add(A, B)print("矩阵加法结果:\n",C)三、求转置矩阵
矩阵的转置是将矩阵的行与列互换,即原矩阵A的第i行第j列元素,变为转置矩阵A^T的第j行第i列元素。
核心方法
- 属性:
A.T(最常用,简洁高效) - 方法:
np.transpose(A)/A.transpose()(支持高维数组轴指定)
示例:
importnumpyasnp A=np.array([[1,2,3],[4,5,6]])# shape: (2, 3)print("原矩阵:\n",A)A_T1=A.T A_T2=np.transpose(A)print("转置矩阵:\n",A_T1)print("转置后形状:",A_T1.shape)# 输出: (3, 2)四、什么是矩阵的 Broadcasting(广播)
广播是 NumPy 中最强大的特性之一,它允许形状不同的数组进行元素级运算(如+、-、*、/),而无需手动复制数组,极大提升了代码的简洁性和运行效率。
1. 广播的核心规则
广播遵循从后往前匹配维度的原则,满足以下条件即可广播:
- 两个数组的维度数不同时,在维度数少的数组前面补
1,直到维度数一致; - 对应维度的大小相等,或其中一个为 1;
- 若对应维度大小既不相等,也不为 1,则广播失败,抛出
ValueError。
2. 广播的直观理解
广播的本质是:将维度为 1 的轴,复制扩展到与另一个数组对应轴相同的大小,再进行元素级运算。
注意:NumPy 不会真的复制数据,而是通过逻辑上的扩展实现运算,内存效率极高。