我有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]
但这对于大型阵列来说太慢了。我可以对其进行哪种优化?
有关:
尝试scipy.spatial.distance.pdist(myArr)。这将为您提供一个简化的距离矩阵。您可以argmin在其上使用并找到最小值的索引。可以将其转换为配对信息。
scipy.spatial.distance.pdist(myArr)
argmin