牛客题解 | 计算向量之间的余弦相似度
题目
余弦相似度是一种衡量两个向量之间相似度的方法,其计算公式为:
\[cosine\ similarity = \frac{A \cdot B}{||A|| \cdot ||B||}
\]
其中,\(A\) 和 \(B\) 是两个向量,\(||A||\) 和 \(||B||\) 是向量 \(A\) 和 \(B\) 的模。本式子其实大家十分熟悉,在高中数学中就已经接触过。是用来计算两个向量之间的夹角的余弦值。
标准代码如下
def cosine_similarity(v1, v2):
if v1.shape != v2.shape:
raise ValueError("Arrays must have the same shape")
if v1.size == 0:
raise ValueError("Arrays cannot be empty")
v1_flat = v1.flatten()
v2_flat = v2.flatten()
dot_product = np.dot(v1_flat, v2_flat)
magnitude1 = np.sqrt(np.sum(v1_flat**2))
magnitude2 = np.sqrt(np.sum(v2_flat**2))
if magnitude1 == 0 or magnitude2 == 0:
raise ValueError("Vectors cannot have zero magnitude")
return round(dot_product / (magnitude1 * magnitude2), 3)

浙公网安备 33010602011771号