2013-01-13 35 views
5

我目前正在尋找一種方法來構建一些kd樹,以便快速查詢一些n維數據。然而,我在與SciPy的KD樹算法與元數據scipy kdtree

我的數據由id -> {data: somedata, coordinate: x, y}

一些問題,我希望能夠在查詢的基礎座標和k近鄰的IDS以及得到修復半徑neghbour的ID。從KDTree和cKDtree的scipy實現來看,這是不可用的。

我的其他選擇是寫我自己的KD樹,這不會那麼好,因爲我只是我,或者......?

回答

4

從玩弄KDTree,它看起來像它堅持有一個2D numpy數組像對象給它的構造函數,但API返回索引到該數組。此外,您不能只將猴子的數據修補到各個座標上。

但是,你仍然可以利用KDTree的膽量。您需要將您的對象拆分爲附加數據對象的並行列表,以及KDTree所看到的座標數組。當它說,返回一些搜索的第三個點,你知道這對應於你的附加數據對象列表中的第三個索引。

當然,它比API更笨拙,會給你一個從任意對象給出座標的關鍵函數,類似於如何將key傳遞給python排序函數,但它比滾動自己的KDTree實現要好得多。

+0

太棒了!我似乎有點誤解了文檔。現在都好 – Pwnna