python实现两向量间夹角
时间: 2024-10-12 07:01:08 浏览: 45
Python 计算任意两向量之间的夹角方法
5星 · 资源好评率100%
在Python中,可以使用数学库math计算两个向量之间的夹角(余弦相似度)。向量的夹角θ可以用它们的点积除以各自的模长(长度)再取反正切得到。下面是一个简单的函数实现:
```python
import math
def angle_between_vectors(vec1, vec2):
dot_product = sum(a * b for a, b in zip(vec1, vec2))
norm_vec1 = math.sqrt(sum(x**2 for x in vec1))
norm_vec2 = math.sqrt(sum(x**2 for x in vec2))
if norm_vec1 == 0 or norm_vec2 == 0: # 防止除零错误
return 0
cos_theta = dot_product / (norm_vec1 * norm_vec2)
theta = math.acos(cos_theta) # 取弧度值
# 因为acos返回的是[0, pi]范围内的角度,如果需要[-π, π],则转换一下
return math.degrees(theta) if dot_product >= 0 else 360 - math.degrees(theta)
# 示例
vec1 = [1, 2]
vec2 = [-2, 1]
angle = angle_between_vectors(vec1, vec2)
print(f"向量 {vec1} 和 {vec2} 之间的夹角为: {angle} 度")
```
阅读全文