2013-01-13 2 views
5

現在、いくつかのn次元データをすばやく検索するために、いくつかのkdツリーを構築する方法を探しています。しかし、私は私が上でベースを照会できるようにしたいscipy kdtree with meta data

私のデータはid -> {data: somedata, coordinate: x, y}

で構成scipyのダウンロードのKDツリーアルゴリズムでいくつかの問題を抱えている座標とk最近傍のIDSなどの修正を取得半径neghbourのid。 KDTreeとcKDtreeのscipy実装から判断すると、これは利用できません。

私の他の選択肢は私自身のKDツリーを書いていますが、それは私が私だけなのですばらしいことではありませんか?

答えて

4

KDTreeで遊んでから、コンストラクタに与えられたオブジェクトのような2D numpy配列を持つように思えますが、APIはその配列にインデックスを返します。さらに、個々の座標にあなたのデータを猿でパッチすることはできません。

しかし、あなたはまだKDTreeの勇気を利用することができます。あなたは、あなたのオブジェクトを、添付されたデータオブジェクトのパラレルリストと、KDTreeが見る座標の数の少ない配列に分割する必要があります。それが言うと、いくつかの検索のために3番目のポイントを返します、あなたはそれが添付データオブジェクトリストの3番目のインデックスに対応することを知っています。

もちろん、Pythonのソート関数にキーを渡す方法と同様、任意のオブジェクトから座標を与えるキー関数を与えるAPIよりも扱いにくいですが、独自のKDTree実装を使うよりはるかに優れています。

+0

恐ろしい!私はドキュメンテーションを少し誤解したようです。すべて今良い – Pwnna