2016-07-08 35 views
3

我有一個基向量(由1和0組成),我想找到50000個其他向量(也包括1和0)的餘弦距離。我發現了很多方法來計算成對距離的整個矩陣,但我對此並不感興趣。相反,我只是感興趣的是獲取我的基矢量與其他矢量的50,000個距離(然後通過排序找到前5個)。什麼是我能達到這個目標的最快方法?成對距離python(一個基本向量相對於其他很多)

+0

那麼你是如何計算矩陣的?你爲什麼不計算每個矢量? – MisterMiyagi

回答

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))