文章目录
一.相关概念
1.1 一维数组
一维数组在python中是用 list 存储。用numpy创建一个一维数组如下所述,会发现此时得到的形状为4。
1.2 行向量
而行向量在线性代数中表示1×N的矩阵,numpy创建如下:
会发现得到的形状变成了1×4
1.3 列向量
列向量在线性代数中表示N×1的矩阵,numpy创建如下:
会发现得到的形状变成了4×1
1.4 矩阵
二维数组又称为矩阵,numpy构建如下(创建一个3×3矩阵):
二. 一维数组计算
2.1 计算元素积(*)
结果为各列相乘。
2.2 计算内积(np.dot)
结果为每列相乘再相加得数值。
2.3 multiply进行计算
直接计算发现计算的元素积。
转换成矩阵np.mat:
结果还是元素积。
三.行向量,列向量的计算
3.1 计算元素积(*)
结果为每列相乘再相加得数值(这里用到了广播机制)。
3.2 计算内积(np.dot)
计算发现计算的元素积。
3.3 multiply进行计算
计算的是元素积(同样使用了广播机制)。
转成矩阵计算还是元素积(只不过类型变成了matrix)。
四. 矩阵的计算
4.1 计算元素积(*)
结果为每列相乘再相加得数值。
对于矩阵则执行内积。
4.2 计算内积(np.dot)
计算发现计算的元素积。
4.3 multiply进行计算
如果通过multiplt直接计算 np.array的值,会当成元素积计算。
转成矩阵计算还是元素积。
五. 总结
(1) np.multiply 无论数组还是矩阵都是元素积(元素对应位置相乘),输出与相乘数组/矩阵的大小一致
(2) np.dot 对于秩为1的数组,执行对应位置相乘再相加;对于秩不为1的二维数组,执行内积;
(3) 星号(*) 对数组执行对应位置相乘;对矩阵执行矩阵乘法运算;
(4) 建议不要使用星号,要么使用np.multiply进行元素积运算,要么用np.dot进行内积运算。