在Python中,如何计算具有不同形状的两个数组的余弦距离?

2024-05-04 20:57:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个阵列:

array1 = numpy.array([ 7.26741212e-01, -9.80825232e-17])
array2 = numpy.array([-3.82390578e-01, -1.48157964e-17],
       [-3.82390578e-01,  7.87310307e-01],
       [ 7.26741212e-01, -9.80825232e-17],
       [ 7.26741212e-01, -9.80825232e-17],
       [-3.82390578e-01, -2.06286905e-01],
       [ 7.26741212e-01, -9.80825232e-17],
       [-2.16887107e-01,  6.84509305e-17],
       [-3.82390578e-01, -5.81023402e-01],
       [-2.16887107e-01,  6.84509305e-17],
       [-2.16887107e-01,  6.84509305e-17])

如何获取列表中array2到array1中每行的余弦距离


1条回答
网友
1楼 · 发布于 2024-05-04 20:57:47
import numpy as np


def cosine_similarity(x, y):
    return np.dot(x, y) / (np.sqrt(np.dot(x, x)) * np.sqrt(np.dot(y, y)))
    
a = np.array([7.26741212e-01, -9.80825232e-17])
b = np.array(([-3.82390578e-01, -1.48157964e-17],
                     [-3.82390578e-01,  7.87310307e-01],
                     [7.26741212e-01, -9.80825232e-17],
                     [7.26741212e-01, -9.80825232e-17],
                     [-3.82390578e-01, -2.06286905e-01],
                     [7.26741212e-01, -9.80825232e-17],
                     [-2.16887107e-01,  6.84509305e-17],
                     [-3.82390578e-01, -5.81023402e-01],
                     [-2.16887107e-01,  6.84509305e-17],
                     [-2.16887107e-01,  6.84509305e-17]))


output = [cosine_similarity(a, y) for y in b]

相关问题 更多 >