numpy中表示向量和矩阵乘法的有四种"*"、outer、dot、multiply。
1、关于 "*" 的用法
"*" 也为对于元素的乘积,但是 "*" 作为乘法运算时,必须满足 numpy 的 broadcasting(广播) 的原则 ,当两个矩阵相乘时,其法则为两矩阵的对应的元素相乘,其用法与multiply相同。感觉“*”很鸡肋,还不如直接用dot或multiply。实例如图所示。
2、关于 outer 的用法
numpy.outer(a, b, out=None): 计算两个向量的外积。假设向量 a = [a0, a1, ... , aM], b = [b0, b1, ..., bN], 则 a*b =[[a0*b0, a0*b1, ... ,a0*bM], [a1*b0, a1*b1, ... , a1*bN], .... , [aM*b0, aM*b1, ... , aM*bN]]; 注意:若 a,b 不为一维数组,则先将其变成一维数组,即可得 a(M,)和 b(N,) 这种形式。也就是说outer只适用于一维数组的计算。实例如图所示。
3、关于 dot 的用法
对于一维数组,则是各元素的乘积;对于二维数组,它相当于矩阵的乘法。实例如下。
4、关于 multiply 的用法
为矩阵的相应元素的乘积,值得注意的是,multiply的两组元素的shape必须一致。实例如下。