Pesquisa vizinha mais próxima: Python

Eu tenho uma matriz bidimensional:

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

Os dois primeiros elementosMyArray[0] eMyArray[1] são asX eY coordenadas dos pontos.

Para cada elemento da matriz, gostaria de encontraro mais rápido maneira de retornar seu único vizinho mais próximo em um raio deX unidades. Estamos assumindo que isso é no espaço 2D.

vamos dizer para este exemploX = 6.

Eu tenho resolvido o problema, comparando cada elemento para todos os outros elementos, mas isso leva 15 minutos ou mais quando sua lista é 22k pontos de comprimento. Esperamos, eventualmente, executar isso em listas de cerca de 30 milhões de pontos.

Eu li sobre árvores K-d e entendi o conceito básico, mas tive dificuldade em entender como escrevê-las.

questionAnswers(1)

yourAnswerToTheQuestion