Python numpy库中dot()、matmul()、multiply、*、@的异同

    科技2026-02-07  1

    Python numpy库中dot()、matmul()、multiply、*、@的异同

    被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几个月的萌新,有错误的地方欢迎指出

    Processed: 0.027, SQL: 9