Python中两个n维向量之间的角度
问题内容:
我需要确定Python中两个n维向量之间的角度。例如,输入可以是两个列表,如下所示:[1,2,3,4]
和[6,7,8,9]
。
问题答案:
import math
def dotproduct(v1, v2):
return sum((a*b) for a, b in zip(v1, v2))
def length(v):
return math.sqrt(dotproduct(v, v))
def angle(v1, v2):
return math.acos(dotproduct(v1, v2) / (length(v1) * length(v2)))
注意
:当向量的方向相同或相反时,这将失败。正确的实现在这里:https
:
//stackoverflow.com/a/13849249/71522