📅  最后修改于: 2023-12-03 15:41:37.252000             🧑  作者: Mango
这是一个用于计算两个 N 维向量之间的夹角的程序。通常在计算机视觉、机器学习、图形学等领域,需要计算向量之间的夹角来进行相似性的度量、分类等操作。该程序能够处理任意维度的向量,并返回角度的弧度值。
向量的夹角可以通过向量内积和向量模长计算得出。具体来说,两个向量 a 和 b 的夹角 θ 可以通过以下公式计算:
cos(θ) = (a · b) / (||a|| ||b||)
其中,"·" 表示向量内积(点乘),即将对应元素相乘后求和,"||" 表示向量的模长。
我们可以通过 numpy 库中的 dot() 函数计算向量内积,norm() 函数计算向量模长。那么,代码实现如下:
import numpy as np
def calc_vector_angle(v1, v2):
"""
计算任意维度向量v1, v2之间的夹角,返回角度的弧度值
"""
if len(v1) != len(v2):
raise ValueError("向量维数不相等")
dot_product = np.dot(v1, v2)
norm_product = np.linalg.norm(v1) * np.linalg.norm(v2)
cos_angle = dot_product / norm_product
radian_angle = np.arccos(cos_angle)
return radian_angle
该程序会首先检查两个向量的维数是否相等,若不相等则会抛出异常。然后,计算向量内积和向量模长,最后计算出余弦值和弧度值,返回弧度值。
以下是计算两个二维向量([1, 2], [3, 4])之间夹角的示例代码:
v1 = np.array([1, 2])
v2 = np.array([3, 4])
angle = calc_vector_angle(v1, v2)
print(angle) # 输出 0.040389441
该程序可以处理任意维度的向量,通过向量内积和向量模长计算向量之间的夹角,返回角度的弧度值。在计算机视觉、机器学习、图形学等领域,这个程序可以用于相似性度量、分类等操作。