Ho una matrice bidimensionale 2:vicina Vicino di ricerca: pitone
MyArray = array([6588252.24, 1933573.3, 212.79, 0, 0],
[6588253.79, 1933602.89, 212.66, 0, 0],
etc...)
I primi due elementi MyArray[0]
e MyArray[1]
sono le coordinate X e Y dei punti.
Per ogni elemento della matrice, vorrei trovare il modo più rapido per tornare il suo unico vicino più prossimo in un raggio di X unità. Supponiamo che questo sia nello spazio 2D.
diciamo per questo esempio X = 6
.
Ho risolto il problema confrontando ogni elemento con ogni altro elemento, ma questo richiede circa 15 minuti quando l'elenco è lungo 22k. Speriamo di farlo funzionare su liste di circa 30 milioni di punti.
Ho letto di alberi K-d e ho compreso il concetto di base, ma ho avuto difficoltà a capire come copiarli.
Che cos'è un "albero Kt"? Intendi "albero di k-d"? Per i punti bidimensionali è sufficiente un [quadruplo] (http://en.wikipedia.org/wiki/Quadtree). C'era una domanda precedente alla ricerca di implementazioni quadtree in Python: http://stackoverflow.com/questions/6060302/pure-python-quadtree-implementation –
Grazie! Intendevo un albero k-d. Cercherò un albero quad. – Dlinet
Esiste un'implementazione dell'albero K-D nel modulo ['scipy.spatial'] (http://docs.scipy.org/doc/scipy/reference/spatial.html) –