2011-06-20 21 views
0

我有一個N x D三維特徵,我需要根據它們與一個1 x D維矢量的距離進行排名。任何快速的方式來實現在Python中沒有遞歸應用argmin通過排名找到最接近的點

謝謝!

+0

看看[最接近的一對問題](http://en.wikipedia.org/wiki/Closest_pair_of_points_problem) – inspectorG4dget

回答

3

很簡單的東西是Squared Euclidean Distance,它的實現是這樣的:

In []: F= randn(5, 3) 
In []: t= randn(1, 3) 
In []: ((F- t)** 2).sum(1) 
Out[]: array([ 8.80512, 4.61693, 2.6002, 3.3293, 12.41800]) 

F是功能和t目標向量。這樣的排名將是:

In []: ((F- t)** 2).sum(1).argsort() 
Out[]: array([2, 3, 1, 0, 4]) 

然而,如果你能描述你的情況較多,可能存在更加適當的措施,如Mahalanobis distance

+0

@unutbu:顯然你編輯過,但我看不出差異。那29個被刪除的字符是什麼?謝謝 – eat

+0

根據每個點與t的接近程度,我預計矩陣的範圍是1到5。這不是我正在尋找的東西。 – JustInTime

+0

@eat:對不起,我應該留下我做過的事情。鏈接(如http://en.wikipedia.org/wiki/http://en.wikipedia.org/wiki/Mahalanobis_distance)被破壞。 – unutbu