np.dot()函数的用法详解
基本简介
dot函数为numpy库下的一个函数,主要用于矩阵的乘法运算,其中包括:向量内积、多维矩阵乘法和矩阵与向量的乘法。
1.向量内积
向量其实是一维的矩阵,两个向量进行内积运算时,需要保证两个向量包含的元素个数是相同的。
例1:
importnumpyasnp x=np.array([1,2,3,4,5,6,7]) y=np.array([2,3,4,5,6,7,8]) result=np.dot(x,y) print(result)
输出结果:
168
计算过程就是将向量中对应元素相乘,再相加所得。即普通的向量乘法运算。
2.矩阵乘法运算
两个矩阵(x,y)如果可以进行乘法运算,需要满足以下条件:
x为m×n阶矩阵,y为n×p阶矩阵,
则相乘的结果result为m×p阶矩阵。
例2:
importnumpyasnp x=np.array([[1,2,3], [3,4,4]]) y=np.array([[0,1,1,1], [1,2,0,1], [0,0,2,1]]) result=np.dot(x,y) print(result) print("x阶数:"+str(x.shape)) print("y阶数:"+str(y.shape)) print("result阶数:"+str(result.shape))
结果为:
[[2 5 7 6]
[4111111]]
x阶数:(2,3)
y阶数:(3,4)
result阶数:(2,4)
dot(x,y)不等于dot(y,x),矩阵乘法不满足交换律
例3:
importnumpyasnp x=np.array([[1,2], [3,4]]) y=np.array([[2,2], [1,2]]) result1=np.dot(x,y) result2=np.dot(y,x) print("result1="+str(result1)) print("result2="+str(result2))
结果为:
result1=[[4 6]
[1014]]
result2=[[812]
[710]]
如果不满足运算前提,都不可以运算。例2的dot(y,x)不满足运算条件,因此运算会报错。
例4:
importnumpyasnp x=np.array([[1,2,3], [3,4,4]]) y=np.array([[0,1,1,1], [1,2,0,1], [0,0,2,1]]) result=np.dot(y,x) print(result)
结果为:
Traceback(mostrecentcalllast):
File"numpy1.py",line96,in
result=np.dot(y,x)
File"<__array_function__internals>",line6,indot
ValueError:shapes(3,4)and(2,3)notaligned:4(dim1)!=2(dim0)
3.矩阵与向量乘法
矩阵x为m×n阶,向量y为n阶向量,则矩阵x和向量y可以进行乘法运算,结果为m阶向量。进行运算时,会首先将后面一项进行自动转置操作,之后再进行乘法运算。
例5:
importnumpyasnp x=np.array([[1,2,3], [3,4,4]]) y=np.array([1,2,3]) result=np.dot(x,y) print(result) print("x阶数:"+str(x.shape)) print("y阶数:"+str(y.shape)) print("result阶数:"+str(result.shape))
结果为:
[1423]
x阶数:(2,3)
y阶数:(3,)
result阶数:(2,)
例6:仍然不满足交换律
importnumpyasnp x=np.array([[1,2,3], [3,4,4], [0,1,1]]) y=np.array([1,2,3]) result1=np.dot(x,y)#1×1+2×2+3×3=14(result1的第一个元素) result2=np.dot(y,x)#1×1+2×3+3×0=7(result2的第一个元素) print("result1="+str(result1)) print("result2="+str(result2))
结果为:
result1=[1423 5]
result2=[71314]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。