Python中multiply()与dot的区别及*运算符行为详解
本文详细解析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.matrixmultiply()、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的内容,建议查阅本站过往文章或继续浏览后续相关内容。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













