Python中multiply()与dot的区别及*运算符行为详解

温以宁
温以宁
发布时间:2026-10-16 | 6人浏览过
原创

本文详细解析Python中numpy库的multiply()、dot函数以及*运算符在数组和矩阵运算中的行为差异。通过对比元素级乘法与矩阵乘法的执行结果,阐明当操作数为数组或矩阵时,各运算符的具体计算逻辑,帮助开发者正确选择乘法方式。

Python中multiply()与dot的区别及*运算符行为详解

首先构建示例所需的数组与矩阵对象,其中变量a和b定义为数组,而A和B定义为矩阵。

import numpy as np
a = np.arange(1,5).reshape(2,2)
type(a)
Out[3]: numpy.ndarray
b = np.arange(0,4).reshape(2,2)
type(b)
Out[5]: numpy.ndarray
A = np.mat(a)
type(A)
Out[7]: numpy.matrix
B = np.mat(b)
type(B)
Out[9]: numpy.matrix

multiply()、dot与*的核心区别

接下来展示在数组和矩阵上使用multiply()、dot函数以及*运算符的计算结果。由于涉及的计算场景较多,此处先明确multiply()、dot与*三者之间的核心区别。

1. * 运算符:当参与运算的两个对象均为数组时,执行对应位置元素相乘(元素级乘法);若其中至少有一个对象为矩阵,则执行矩阵乘法。

2. dot 运算符:无论参与运算的是数组还是矩阵,均执行矩阵乘法。

3. multiply() 函数:无论参与运算的是数组还是矩阵,均执行对应位置元素相乘(元素级乘法)。

数组与矩阵的乘法运算示例

数组与数组使用 * 运算符的计算示例

a
Out[11]: 
array([[1, 2],
       [3, 4]])
b
Out[12]: 
array([[0, 1],
       [2, 3]])
a * b
Out[13]: 
array([[ 0,  2],
       [ 6, 12]])

矩阵与矩阵使用 * 运算符的计算示例

A
Out[14]: 
matrix([[1, 2],
        [3, 4]])
B
Out[15]: 
matrix([[0, 1],
        [2, 3]])
A*B
Out[16]: 
matrix([[ 4,  7],
        [ 8, 15]])

数组与数组使用 dot 函数的计算示例

a
Out[18]: 
array([[1, 2],
       [3, 4]])
b
Out[19]: 
array([[0, 1],
       [2, 3]])
a.dot(b)
Out[20]: 
array([[ 4,  7],
       [ 8, 15]])

矩阵与矩阵使用 dot 函数的计算示例

A
Out[14]: 
matrix([[1, 2],
        [3, 4]])
B
Out[15]: 
matrix([[0, 1],
        [2, 3]])
Out[21]: 
matrix([[ 4,  7],
        [ 8, 15]])

数组与数组使用 multiply() 函数的计算示例

a
Out[22]: 
array([[1, 2],
       [3, 4]])
b
Out[23]: 
array([[0, 1],
       [2, 3]])
np.multiply(a,b)
Out[24]: 
array([[ 0,  2],
       [ 6, 12]])

矩阵与矩阵使用 multiply() 函数的计算示例

A
Out[25]: 
matrix([[1, 2],
        [3, 4]])
B
Out[26]: 
matrix([[0, 1],
        [2, 3]])
np.multiply(A,B)
Out[27]: 
matrix([[ 0,  2],
        [ 6, 12]])

数组与矩阵使用 * 运算符的计算示例

a
Out[29]: 
array([[1, 2],
       [3, 4]])
B
Out[30]: 
matrix([[0, 1],
        [2, 3]])
a * B
Out[31]: 
matrix([[ 4,  7],
        [ 8, 15]])

矩阵与数组使用 * 运算符的计算示例

a
Out[29]: 
array([[1, 2],
       [3, 4]])
B
Out[30]: 
matrix([[0, 1],
        [2, 3]])
a * B
Out[31]: 
matrix([[ 4,  7],
        [ 8, 15]])

数组与矩阵使用 dot 函数的计算示例

a
Out[35]: 
array([[1, 2],
       [3, 4]])
B
Out[36]: 
matrix([[0, 1],
        [2, 3]])
a.dot(B)
Out[37]: 
matrix([[ 4,  7],
        [ 8, 15]])

矩阵与数组使用 dot 函数的计算示例

A
Out[38]: 
matrix([[1, 2],
        [3, 4]])
b
Out[39]: 
array([[0, 1],
       [2, 3]])
A.dot(b)
Out[40]: 
matrix([[ 4,  7],
        [ 8, 15]])

数组与矩阵使用 multiply() 函数的计算示例

a
Out[41]: 
array([[1, 2],
       [3, 4]])
B
Out[42]: 
matrix([[0, 1],
        [2, 3]])
np.multiply(a,B)
Out[43]: 
matrix([[ 0,  2],
        [ 6, 12]])

矩阵与数组使用 multiply() 函数的计算示例

A
Out[44]: 
matrix([[1, 2],
        [3, 4]])
b
Out[45]: 
array([[0, 1],
       [2, 3]])
np.multiply(A,b)
Out[46]: 
matrix([[ 0,  2],
        [ 6, 12]])

运算行为总结

核心结论总结

1. * 运算符:若参与运算的两个对象均为数组,则执行对应位置元素相乘;若其中至少有一个为矩阵,则执行矩阵乘法。

2. dot 运算符:无论参与运算的是数组还是矩阵,均执行矩阵乘法。

3. multiply() 函数:无论参与运算的是数组还是矩阵,均执行对应位置元素相乘。

综上所述,当使用数组进行乘法运算时,* 运算符执行元素级相乘,若需进行矩阵乘法,应使用 dot 函数;而当使用矩阵时,* 运算符直接执行矩阵乘法,若需进行元素级相乘,则应使用 multiply() 函数。由此可见,dot 运算符专门负责数组或矩阵的矩阵乘法,而 multiply() 函数专门负责数组或矩阵的元素级相乘。

至此,关于Python中multiply()与dot函数的使用示例及区别讲解完毕。如需了解更多相关Python multiply()与dot的内容,建议查阅本站过往文章或继续浏览后续相关内容。感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表