私は数日間このものを使って遊んでいて、パフォーマンスの壁にぶち当たっています。3D空間内の特定の軸に沿った最も近い点を効率的に見つける
データ:3Dの数十万人に
- 10sが
- ポイントは、正/負のint型であり、
- めったに新しいポイント
- を追加しません重複なしで3Dグリッドの上に落ちるポイント通常はギャップレスですが、ギャップは可能です
構造:
- 各軸(最も近い点を左に)に最も近い隣接点を効率的に見つけることができ、軸のみである必要があります。
- がまれに挿入を処理していないか(しかし、それらを処理する必要があります)
- は私がhttp://docs.scipy.org/doc/scipy/reference/spatial.htmlで可能な解決策を発見した重複ポイント
を処理する必要はありません建設後に削除されます、しかし、kd木は非常に無駄のようですこのタイプのデータ(任意の点のクラスタに適しています)に対して、半径内の点を見つけるために調整されます。このデータの主な使用事例は、それぞれに沿って最も近い近傍点を見つけ出す(そして追跡する)ことが多い。
例データ(X、Y、Z):
[(4, 3, 0), (4, 4, 0), (5, 3, 0), (3, 3, 0), (4, 3, 1), ...]
は、おそらく私のグーグル-FUは、(好ましくは、Pythonで)既に私と最適な構造が存在する失敗しているが、私は1つを見つけることができませんでした。
私はあなたの答えがありませんが、私はあなたがそのような様々な分析を必要としているしようとしているものについて興味があります。 –
飛行機でこれをやっていますか?選択したポイントと他のポイントとの絶対的な差異によってリストをソートするのはどうですか? – Ben
@burhanこれは、[minecraft](http://minecraft.net)地形エディタライブラリです。既存のライブラリ(例:[pymclevel](https://github.com/mcedit/pymclevel))は非常に乱雑で非効率的です。このアプローチは、既存の世界フォーマットのどれかを単純な抽象化によってサポートすることを目的としています。その抽象化によって、固定サイズのチャンクにグリッドを分割し、そのグリッドの効率的なトラバーサルを実現します。それがなければ、少しの点があります。 – TkTech