2016-07-08 7 views
3

私は基底ベクトル(1と0から成る)を持っていて、50,000の他のベクトル(1と0で構成されています)までの余弦距離を求めます。ペアワイズ距離の行列全体を計算する方法はたくさんありましたが、私はそれに興味がありません。むしろ、私はちょうどお互いのベクトルに対して私のベースベクトルの50,000の距離を得ることに興味があります(そして、トップ5を見つけるためにソートします)。私はこれを達成する最も速い方法は何ですか?ペアワイズ距離python(多くの他のものに対して1つの基底ベクトル)

+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)) 
関連する問題