成对距离 python(一个基向量对许多其他基向量)

Pairwise distance python (one base vector against many others)

我有一个基本向量(由 1 和 0 组成),我想找到与 50,000 个其他向量(也由 1 和 0 组成)的余弦距离。我找到了很多方法来计算整个成对距离矩阵,但我对此不感兴趣。相反,我只是想获得我的基本向量与其他向量之间的 50,000 个距离(然后排序以找到前 5 个)。最快的方法是什么?

矢量化操作与单独执行它们完全相同,只要您注意坐标轴即可。这里我每行都有单独的 "other" 个向量:

others = numpy.random.randint(0,2,(10,10))
base = numpy.random.randint(0,2,(10,1))
d = numpy.inner(base.T, others) / (numpy.linalg.norm(others, axis=0) * numpy.linalg.norm(base))