多个向量之间的距离

时间:2020-05-17 16:07:37

标签: python numpy vector euclidean-distance

我有两组三维单位矢量,我希望以此来衡量它们之间的相似程度。我目前的方法是手动计算它们之间差异的欧几里得范数。

一个示例(不考虑单位矢量)看起来像

import numpy as np

N = 4000
a = np.random.rand(3,N)
b = np.random.rand(3,N)

dist = np.sum((a-b)**2,axis=0)
dist = np.sum(dist)/len(dist)

是否有更好的方法可以做到这一点?即我没有想到的numpy函数或度量?

3 个答案:

答案 0 :(得分:2)

要以numpy计算欧几里得距离,可以使用

numpy.linalg.norm(a-b)

还有其他类型的距离,用于测量其他类型的相似性。 SciPy在文档https://docs.scipy.org/doc/scipy/reference/spatial.distance.html

中实现和描述了很多

答案 1 :(得分:0)

您可以在scipy软件包中使用距离。

from scipy.spatial import distance

distance.euclidean(a, b)

答案 2 :(得分:0)

如问题注释中所述,这应该更适合您要执行的操作:

from scipy import spatial
import numpy as np

N = 10
a = np.random.rand(3, N)
b = np.random.rand(3, N)

mean_a = np.mean(a, axis=1)
mean_b = np.mean(b, axis=1)

similarity = spatial.distance.cosine(mean_a, mean_b)

更接近1的值更相似,更接近0的值更不相似。

相关问题