Scipy (http://www.scipy.org/) offre due classi KD Tree; il KDTree e il cKDTree.Ottimizzazione ricerche albero KD Python
Il cKDTree è molto più veloce, ma è meno personalizzabile e in grado di interrogare rispetto a KDTree (per quanto ne so dai documenti).
Ecco il mio problema: Ho una lista di 3 milioni di punti (X, Y) dimensionali. Devo restituire tutti i punti entro una distanza di X unità da ogni punto.
Con KDtree, c'è un'opzione per fare proprio questo: KDtree.query_ball_tree()
Genera un elenco di elenchi di tutti i punti all'interno di unità X da ogni altro punto. TUTTAVIA: questa lista è enorme e riempie rapidamente la mia memoria virtuale (circa 744 milioni di articoli lungo).
Soluzione potenziale n. 1: C'è un modo per analizzare questo elenco in un file di testo mentre sta scrivendo?
soluzione Potenziale # 2: Ho provato con un ciclo for (per ogni punto nella lista) e poi trovare che i vicini singolo punto all'interno di X unità impiegando: KDtree.query_ball_point()
. TUTTAVIA: ci vuole sempre perché ha bisogno di eseguire la query milioni di volte. Esiste un equivalente cKDTree di questo strumento KDTree?
Soluzione potenziale n. 3: Beats me, qualcun altro ha qualche idea?
Ah sarebbe fantastico. Non ho alcuna competenza/esperienza con la compilazione dalla fonte, quindi forse lo esaminerò.Altrimenti, a meno che non venga pubblicata un'altra soluzione, aspetterò la nuova versione di scipy. – Dlinet
@Dlinet La versione 0.12 è stata rilasciata il mese scorso. – jorgeca