python中求兩個向量的夾角方式
更新時間:2023年06月14日 16:03:46 作者:sugar椰子皮
這篇文章主要介紹了python中求兩個向量的夾角方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
python求兩個向量的夾角
import numpy as np x=np.array([3,5]) y=np.array([4,2]) # 兩個向量 Lx=np.sqrt(x.dot(x)) Ly=np.sqrt(y.dot(y)) #相當(dāng)于勾股定理,求得斜線的長度 cos_angle=x.dot(y)/(Lx*Ly) #求得cos_sita的值再反過來計算,絕對長度乘以cos角度為矢量長度,初中知識。。 print(cos_angle) angle=np.arccos(cos_angle) angle2=angle*360/2/np.pi #變?yōu)榻嵌? print(angle2) #x.dot(y) = y=∑(ai*bi)
矩陣相乘的算法
>> a=[1,2,3;4,5,6;7,8,9];
>> b=[6,6,6;6,6,6;6,6,6];
>> dot(a,
ans =
72 90 108
1*6+4*6+7*6=72
#三個相加
#dot 是矩陣相乘
#print(np.dot(x,x))
#34
# a=np.linalg.norm(x-y)
# print(a)
costheta=x.dot(y)/(np.linalg.norm(x)*np.linalg.norm(y))
#范數(shù)
# #[-1 3]
# a=np.square(x-y)
# #[1,9]
# print(np.sum(a))
# #10
# print(np.sqrt(10))NumPy.array求點乘,向量長度,向量夾角的方法
求點乘方法有
- 1. np.sum(a*b)
- 2. (a*b).sum()
- 3. np.dot(a, b)
- 4. a.dot(b)
- 5. b.dot(a)
求向量長度方法有
- 1. np.sqrt((a*a).sum())
- 2. np.linalg.norm(a)
求兩個向量夾角
根據(jù)點乘定義,cosangle = a.dot(b)/(np.linalg.norm(a) * np.linalg.norm(b))
In [25]: a = np.array([1,2])
In [26]: b = np.array([2, 1])
In [27]: dot = 0
In [28]: for e, f in zip(a, b):
...: dot += e*f
...:
In [29]: dot
Out[29]: 4
In [30]: a*b
Out[30]: array([2, 2])
In [31]: np.sum(a*b)
Out[31]: 4
In [32]: (a*b).sum()
Out[32]: 4
In [33]: np.dot(a,b)
Out[33]: 4
In [34]: a.dot(b)
Out[34]: 4
In [35]: b.dot(a)
Out[35]: 4
In [36]: amag = np.sqrt((a*a).sum())
In [37]: amag
Out[37]: 2.23606797749979
In [38]: amag = np.linalg.norm(a)
In [39]: amag
Out[39]: 2.23606797749979
In [40]: cosangle = a.dot(b)/(np.linalg.norm(a) * np.linalg.norm(b))
In [41]: cosangle
Out[41]: 0.7999999999999998
In [42]: angle = np.arccos(cosangle)
In [43]: angle
Out[43]: 0.6435011087932847總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 字符串操作實現(xiàn)代碼(截取/替換/查找/分割)
這篇文章主要介紹了Python 字符串截取/替換/查找/分割等實現(xiàn)方法,需要的朋友可以參考下2013-06-06
淺談Django QuerySet對象(模型.objects)的常用方法
這篇文章主要介紹了淺談Django QuerySet對象(模型.objects)的常用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

