2013-01-13 8 views
5

Attualmente sto cercando un modo per costruire un paio di alberi kd per interrogare rapidamente alcuni dati n-dimensionali. Tuttavia, sto avendo qualche problema con l'algoritmo albero SciPy KDscipy kdtree con metadati

miei dati è costituito da id -> {data: somedata, coordinate: x, y}

voglio essere in grado di interrogare base sul coordinare e k-nearest ids del vicino così come ottenere la correzione raggio neghbour's id. A giudicare dall'implementazione scipy di KDTree e cKDtree, questo non è disponibile.

Le altre mie opzioni stanno scrivendo il mio albero KD, che non sarà eccezionale perché sono solo io o ...?

risposta

4

Dal gioco con lo KDTree, sembra che abbia bisogno di disporre di un array numerico 2D come oggetto assegnato al costruttore, ma l'API restituisce gli indici in tale array. Inoltre, non puoi semplicemente ricamare i tuoi dati sulle singole coordinate.

Tuttavia, è ancora possibile sfruttare l'intestino del KDTree. È necessario suddividere l'oggetto in un elenco parallelo degli oggetti dati associati e una matrice numerica delle coordinate rilevate da KDTree. Quando dice, restituisce il terzo punto per una ricerca, sai che corrisponde al terzo indice nell'elenco di oggetti dati collegati.

Certo, è più imbarazzante di un'API che ti fornisce una funzione chiave che fornisce le coordinate da un oggetto arbitrario, simile a come puoi passare la chiave alla funzione di ordinamento Python, ma è molto meglio che implementare la tua implementazione KDTree .

+0

Fantastico! Sembra che abbia frainteso un po 'la documentazione. Tutto bene ora – Pwnna