本文主要是介绍numpy的矩阵乘法与点乘的代码表示(易混淆),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
numpy的矩阵乘法与点乘的代码表示(易混淆)
- 矩阵的乘法(此处用*表示)
- 矩阵点乘(此处使用.*表示,.*实际并不存在)
- 总结
题外话:本文针对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的类型(推荐使用)
这篇关于numpy的矩阵乘法与点乘的代码表示(易混淆)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!