7

現在、いくつかの n 次元データをすばやくクエリするために、いくつかの kd ツリーを構築する方法を探しています。ただし、scipy KD ツリー アルゴリズムに問題があります。

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

座標と k 最近傍の ID に基づいてクエリを実行し、修正半径の隣人の ID を取得できるようにしたいと考えています。KDTree と cKDtree の scipy 実装から判断すると、これは利用できません。

私の他のオプションは、私自身の KD ツリーを作成することです。

4

1 に答える 1

4

KDTreeをいじってみると、オブジェクトのような 2D numpy 配列をコンストラクターに指定することを主張しているように見えますが、API はその配列にインデックスを返します。さらに、データを個々の座標にモンキー パッチすることはできません。

ただし、KDTree の機能を利用することはできます。オブジェクトを、添付されたデータ オブジェクトの並列リストと、KDTree が参照する座標の numpy 配列に分割する必要があります。ある検索で 3 番目のポイントを返すと言うと、それが添付データ オブジェクト リストの 3 番目のインデックスに対応することがわかります。

確かに、Python の sort 関数にキーを渡す方法と同様に、任意のオブジェクトから座標を取得するキー関数を提供する API よりも厄介ですが、独自の KDTree 実装をローリングするよりははるかに優れています。

于 2013-01-13T19:21:37.457 に答える