Scipy cKDTree最近邻居,包括零距离

时间:2016-04-22 16:18:23

标签: python scipy

我想使用Scipy cKDTree找到远处的邻居。最重要的是,我想要点本身(零距离)。 cKDTree。查询给出所有邻居但没有零距离。

有办法做到这一点吗?

由于

1 个答案:

答案 0 :(得分:2)

我无法真正重现您的问题(或者它可能取决于您用于查询树的方法)。

考虑这个简单的代码片段:

>>> from scipy.spatial import cKDTree
>>> import numpy as np

>>> points_ref = np.array([(1, 1), (3, 3), (4, 4), (5, 4), (6, 6)])
>>> tree = cKDTree(points_ref)

使用cKDTree.query_ball_point方法查询点2附近距离(4, 4)的最近邻居可以得到类似的内容:

>>> idx = tree.query_ball_point((4, 4), 2)
>>> points_ref[idx]
# array([[3, 3], [4, 4], [5, 4]])

返回距离为0的点。

使用方法cKDTree.query查询 n-nearest 邻居似乎也返回距离为0的点:

>>> _, idx = tree.query((3, 3), k=2)
>>> points_ref[idx]
# array([[3, 3], [4, 4]])