被numpy库里矩阵乘法弄糊涂了,尝试做了一份表格来对比差异,代码比较简单就不贴了 主要是不同函数的差异,不涉及到广播机制
运算用例a*bnp.multiply(a,b)np.matmul(a,b)np.dot(a,b)a@b向量 [ 0 1 ] [ 1 2 ] \begin{bmatrix}0 & 1 \\\end{bmatrix}\begin{bmatrix}1 & 2 \\\end{bmatrix} [01][12] [ 0 2 ] \begin{bmatrix}0 & 2 \\\end{bmatrix} [02] [ 0 2 ] \begin{bmatrix}0 & 2 \\\end{bmatrix} [02]222维度不同的多维数组a,b(np.array) [ 1 2 3 4 5 6 ] [ 1 2 ] \begin{bmatrix}1 & 2 \\3 & 4\\5 & 6\end{bmatrix} \begin{bmatrix}1\\2\end{bmatrix} ⎣⎡135246⎦⎤[12]ValueError无法相乘ValueError无法相乘 [ 5 11 17 ] \begin{bmatrix}5 \\11\\17\end{bmatrix} ⎣⎡51117⎦⎤ [ 5 11 17 ] \begin{bmatrix}5 \\11\\17\end{bmatrix} ⎣⎡51117⎦⎤ [ 5 11 17 ] \begin{bmatrix}5 \\11\\17\end{bmatrix} ⎣⎡51117⎦⎤维度相同的多维数组a,b(np.array) [ 0 1 2 3 ] [ 2 3 4 5 ] \begin{bmatrix}0 & 1 \\2 & 3\end{bmatrix} \begin{bmatrix}2 & 3\\4 & 5\end{bmatrix} [0213][2435] [ 0 3 8 15 ] \begin{bmatrix}0 & 3 \\8 & 15\end{bmatrix} [08315] [ 0 3 8 15 ] \begin{bmatrix}0 & 3 \\8 & 15\end{bmatrix} [08315] [ 4 5 16 21 ] \begin{bmatrix}4 & 5 \\16 & 21\end{bmatrix} [416521] [ 4 5 16 21 ] \begin{bmatrix}4 & 5 \\16 & 21\end{bmatrix} [416521] [ 4 5 16 21 ] \begin{bmatrix}4 & 5 \\16 & 21\end{bmatrix} [416521]矩阵同上 [ 4 5 16 21 ] \begin{bmatrix}4 & 5 \\16 & 21\end{bmatrix} [416521]同上同上同上同上注意:
a.dot(b)结果等同于np.dot(a,b)np.array与np.matrix可以互相转换,matrix库有一些更实用的函数,如转置(.T)总结:
对于向量/多维数组:
multiply()与*作用相同,为对应位置元素相乘dot()、matmul()、@作用相同,为求向量内积/矩阵乘法对于矩阵(np.matrix):
*为做矩阵乘法,需要注意与多维数组的区别
才学python几个月的萌新,有错误的地方欢迎指出
