私はそれぞれが3000個の要素を持つ10,000個のベクトルを持つnumpy配列を持っています。私はそれらの間の距離で最も近いペアの上位10のインデックスを返したいと思います。行5と行7が最も近いユークリッド距離0.005を持ち、行8と行10が0.0052の2番目に近いユークリッド距離を持っていれば、私は[(8,10、.0052)、(5,7 ,. 005)]。伝統的なforループメソッドは非常に遅いです。大規模な特徴ベクトルのユークリッド近傍を得る方法(np配列として保存)のための代替のより速いアプローチがありますか?Pythonで大規模な特徴ベクトルに最も近い10個のユークリッド近似を得る最速の方法
私は次のことをやっている:
l = []
for i in range(0,M.shape[0]):
for j in range(0,M.shape[0]):
if i != j and i > j:
l.append((i,j,euc(M[i],M[j]))
return l
ここEUCは、scipyのダウンロードを使用して、マトリックスの2つのベクトル間のユークリッド距離を計算するための機能です。 次に、私はlをソートして、最も近い上位10個の距離を引き出します
あなたは[this](http://stackoverflow.com/questions/22720864/efficiently-calculating-a-euclidean-distance-matrix-using-numpy)と[this](http://stackoverflow.com)を見ましたか?/questions/22390418 /ポイント間のペアワイズ変位ベクトル)? –
[ユークリッド距離はどのようにnumpyで計算できますか?](http://stackoverflow.com/questions/1401712/how-can-the-euclidean-distance-be-calculated-with-numpy) – DyZ
私は知っていますどのようにユークリッド距離を計算するのか、すでに行っているのですが、np配列の各行の間でそれを競合させ、それをソートしてトップ10に戻す最速の方法を探しています –