最近的满足条件的k个邻居(python)

时间:2013-08-09 10:36:59

标签: python constraints nearest-neighbor kdtree

我对“找到最近邻居”算法略有不同,其中包括拒绝那些不满足特定条件的算法,我无法想到如何有效地做到这一点。

我所追求的是找到当前视线中的k个最近邻居。遗憾的是,scipy.spatial.cKDTree没有提供使用过滤器进行搜索以有条件地拒绝点的选项。

我能想出的最好的算法是查询n个最近邻居,如果没有k在视线内,则再次查询2n个最近邻居并重复。不幸的是,这意味着在最坏的情况下重复计算n个最近的邻居。我必须重复此查询的次数越多,性能就越差。另一方面,如果不需要返回的大多数点,设置n太高可能会浪费。

视线经常变化,所以我不能每次都重新计算cKDTree。有什么建议?

1 个答案:

答案 0 :(得分:0)

如果您正在寻找视线中的邻居,则无法使用

之类的方法
  

cKDTree.query_ball_point(self,x,r,p,eps)

允许您在 x 数组点周围查询KDTree以查找 r 半径范围内的邻居。 除非我误解了你的问题,否则似乎已知视线并且等同于 r 值。