我想使用Scipy cKDTree找到远处的邻居。最重要的是,我想要点本身(零距离)。 cKDTree。查询给出所有邻居但没有零距离。
有办法做到这一点吗?
由于
答案 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]])