一.相关概念

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进行内积运算。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐