numpy的矩阵乘法与点乘的代码表示(易混淆)

本文深入解析Numpy中矩阵乘法与点乘的区别及应用,包括不同类型的矩阵(np.array与np.mat)如何进行正确的乘法和点乘操作,提供代码示例,帮助读者掌握Numpy矩阵运算技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题外话:本文针对python中的numpy库进行矩阵的乘法与点乘计算

矩阵的乘法(此处用*表示)

1、 mat1和mat2为np.array类型,mat1 * mat2使用np.dot(mat1, mat2)或者mat1.dot(mat2)
代码表示

import numpy as np
np.random.seed(0)
mat1 = np.random.randn(2, 3) # this will return an array with shape(2, 3)
mat2 = np.random.randn(3, 4) # this wil return an array with shape(3, 4)

# way1
res1 = np.dot(mat1, mat2)
print(res1)
# way2
res2 = mat1.dot(mat2)
print(res2)

结果
在这里插入图片描述
注意
当都是np.array类型时,mat1 * mat2如果用*表示,则会提示ERROR,如图所示在这里插入图片描述
2、mat1和mat2为np.mat类型,mat1 * mat2可以使用np.dot(mat1, mat2)或者mat1 * mat2或者mat1.dot(mat2)
代码表示

import numpy as np
np.random.seed(0)
mat1 = np.mat(np.random.randn(2, 3))
mat2 = np.mat(np.random.randn(3, 4))

# way1
res1 = np.dot(mat1, mat2)
print(res1)
# way2
res2 = mat1.dot(mat2)
print(res2)
# way3
res3 = mat1 * mat2
print(res3)

结果
在这里插入图片描述
3、mat1和mat2种有一个是np.mat类型,mat1 * mat2同2

矩阵点乘(此处使用.*表示,.*实际并不存在)

1、 mat1和mat2为np.array类型,mat1 .* mat2使用np.multiply(mat1, mat2)或者mat1 * mat2
代码表示

import numpy as np
np.random.seed(0)
mat1 = np.random.randn(2, 3)
mat2 = np.random.randn(2, 3)

# way1
res1 = np.multiply(mat1, mat2)
print(res1)
# way2
res2 = mat1 * mat2
print(res2)

结果
在这里插入图片描述
2、mat1和mat2为np.mat类型,mat1 .* mat2使用np.multiply(mat1, mat2)
代码表示

import numpy as np
np.random.seed(0)
mat1 = np.mat(np.random.randn(2, 3))
mat2 = np.mat(np.random.randn(2, 3))

res = np.multiply(mat1, mat2)
print(res)

结果
在这里插入图片描述
3、mat1和mat2种有一个是np.mat类型,mat1 .* mat2同2

总结

1、当输入都是numpy.array类型时,*表示矩阵点乘;当输入至少有一个是numpy.mat类型时,*表示矩阵乘法
2、numpy.dot(a, b)表示矩阵乘法并且不用区分a和b的类型(推荐使用)
3、numpy.multiply(a,b)表示矩阵点乘并且不用区分a和b的类型(推荐使用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值