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