Определение точек с наименьшим евклидовым расстоянием

У меня есть набор из n размерных точек, и я хочу найти, какие 2 являются ближайшими. Лучшее, что я мог придумать для 2-х измерений is:

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]

Но это слишком медленно для больших массивов. Какую оптимизацию я могу применить к нему?

СВЯЗАННЫЕ:


Евклидово расстояние между точками в двух разных массивах Numpy, не в пределах

9
задан Community 23 May 2017 в 12:01
поделиться