我有一個n維點的集合,我想找到哪個2最接近。我能想出的2個維的最好的是:識別具有最小歐幾里德距離的點
from numpy import *
myArr = array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
n = myArr.shape[0]
cross = [[sum((myArr[i] - myArr[j]) ** 2), i, j]
for i in xrange(n)
for j in xrange(n)
if i != j
]
print min(cross)
這給
[8, 0, 1]
但是,這是大型陣列太慢。我可以對其應用哪種優化?
相關:
Euclidean distance between points in two different Numpy arrays, not within
@Ηλίας很好地擴展:大約多少分你有嗎?請注意,可能有一組超過2點(甚至所有點)具有相同的距離(但不準確的計算可能不會反映這一點,所以最終您需要能夠設置閾值trh,其中trh以下的距離差爲視爲平等)。你沒有興趣找出最接近指定的點? – eat 2011-02-25 20:31:43
@eat它是我正在構建的層次結構集羣,我需要找到兩個最接近的質心。通常不到一千分,但我需要看看它可以擴展多少。舍入錯誤對我來說不會那麼重要。 – 2011-02-25 20:57:38