np.dot()、np.multiply()以及(*)三者之间的区别
np.dot()、np.multiply()以及(*)三者之间的区别
今天在做machine learning作业时,对矩阵相乘和元素对应相乘用什么方法感到疑惑,特此总结一下。
结论
类型 | 数组(ndarray) | 矩阵(matrix) |
---|---|---|
元素乘法 | np.multiply(a,b) 或 a*b | np.multiply(a,b) |
矩阵乘法 | np.dot(a,b) | np.dot(a,b) 或 a* b |
- 元素乘法:np.multiply(a,b)
- 矩阵乘法:np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b)
- 唯独注意:*,在 np.array 中重载为元素乘法,在 np.matrix 中重载为矩阵乘法!
案例
对于np.array对象
>>> a
array([[1, 2],
[3, 4]])
- 元素乘法 用 a*b 或 np.multiply(a,b)
>>> a*a
array([[ 1, 4],
[ 9, 16]])
>>> np.multiply(a,a)
array([[ 1, 4],
[ 9, 16]])
- 矩阵乘法 用 np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b)
>>> np.dot(a,a)
array([[ 7, 10],
[15, 22]])
>>> np.matmul(a,a)
array([[ 7, 10],
[15, 22]])
>>> a.dot(a)
array([[ 7, 10],
[15, 22]])
对于 np.matrix 对象
>>> A
matrix([[1, 2],
[3, 4]])
- 元素乘法 用 np.multiply(a,b)
>>> np.multiply(A,A)
matrix([[ 1, 4],
[ 9, 16]])
- 矩阵乘法 用 a*b 或 np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b)
>>> A*A
matrix([[ 7, 10],
[15, 22]])
>>> np.dot(A,A)
matrix([[ 7, 10],
[15, 22]])
>>> np.matmul(A,A)
matrix([[ 7, 10],
[15, 22]])
>>> A.dot(A)
matrix([[ 7, 10],
[15, 22]])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)