我有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

最佳答案

尝试scipy.spatial.distance.pdist(myArr)。这将为您提供一个简化的距离矩阵。您可以在上面使用argmin并找到最小值的索引。可以将其转换为配对信息。

关于python - 识别具有最小欧氏距离的点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5119644/

10-12 14:28