scipy.spatial.cKDTree.query_ball_point

cKDTree.query_ball_point(self, x, r, p=2., eps=0, workers=1, return_sorted=None, return_length=False)

查找点x的距离r内的所有点。

参数
xarray_like,Shape tuple+(self.m,)

要搜索其邻居的一个或多个点。

rARRAY_LIKE,浮点

返回点的半径,应广播到x的长度。

p浮动,可选

使用哪个Minkowski p-范数。应该在范围内 [1,信息] 。如果可能发生溢出,有限大的p可能会导致ValueError。

eps非负浮点型,可选

近似搜索。如果树的分支最近的点比树的距离远,则不会探索树的分支 r / (1 + eps) ,并且如果分支的最远点比最近的点更近,则会批量添加分支 r * (1 + eps)

workers整型,可选

要调度以进行并行处理的作业数。如果给定-1,则使用所有处理器。默认值:1。

在 1.6.0 版更改: “n_job”参数已重命名为“worker”。旧名称“n_job”已弃用,将停止在本网站1.8.0中工作。

return_sorted布尔值,可选

如果为True,则对返回的索引进行排序;如果为False,则不对其进行排序。如果为None,则不对单点查询进行排序,但会对多点查询进行排序,这是添加此选项之前的行为。

1.2.0 新版功能.

return_length: bool, optional

返回半径内的点数,而不是索引列表。。。添加的版本::1.3.0

退货
results列表或列表数组

如果 x 是单个点,则返回 x 。如果 x 是点的数组,返回包含邻居列表的形状元组的对象数组。

注意事项

如果您有许多要查找其邻居的点,则通过将它们放入cKDTree并使用query_ball_tree可以节省大量时间。

示例

>>> from scipy import spatial
>>> x, y = np.mgrid[0:4, 0:4]
>>> points = np.c_[x.ravel(), y.ravel()]
>>> tree = spatial.cKDTree(points)
>>> tree.query_ball_point([2, 0], 1)
[4, 8, 9, 12]

查询多个点并绘制结果:

>>> import matplotlib.pyplot as plt
>>> points = np.asarray(points)
>>> plt.plot(points[:,0], points[:,1], '.')
>>> for results in tree.query_ball_point(([2, 0], [3, 3]), 1):
...     nearby_points = points[results]
...     plt.plot(nearby_points[:,0], nearby_points[:,1], 'o')
>>> plt.margins(0.1, 0.1)
>>> plt.show()
../../_images/scipy-spatial-cKDTree-query_ball_point-1.png