Búsqueda de vecinos más cercano: Python

Tengo una matriz bidimensional:

MyArray = array([6588252.24, 1933573.3, 212.79, 0, 0],
                [6588253.79, 1933602.89, 212.66, 0, 0],
                 etc...)

Los dos primeros elementosMyArray[0] yMyArray[1] son losX yY Coordenadas de los puntos.

Para cada elemento de la matriz, me gustaría encontrarlo más rápido manera de devolver su vecino más cercano solo en un radio deX unidades. Estamos asumiendo que esto es en el espacio 2D.

digamos para este ejemploX = 6.

He resuelto el problema comparando cada elemento con cada otro elemento, pero esto toma aproximadamente 15 minutos cuando tu lista tiene 22k puntos de longitud. Esperamos eventualmente ejecutar esto en listas de alrededor de 30 millones de puntos.

He leído sobre los árboles K-d y entiendo el concepto básico, pero he tenido problemas para entender cómo escribirlos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta