我有一个基矢(由1' s和0'组成),我想找到50,000个其他矢量的余弦距离(也包括1' s和0' s )。我找到了很多方法来计算成对距离的整个矩阵,但我对此并不感兴趣。相反,我只是想让我的基矢量相对于每个其他矢量的50,000距离(然后排序以找到前5)。我能做到这一点的最快方式是什么?
答案 0 :(得分:1)
矢量化操作与单独操作完全相同,只要您小心轴即可。在这里,我每行都有单独的“其他”向量:
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))