scipy.spatial.KDTree.
查询#
- KDTree.query(x, k=1, eps=0, p=2, distance_upper_bound=inf, workers=1)[源代码][源代码]#
查询 kd-树 以获取最近邻。
- 参数:
- xarray_like, 最后一个维度 self.m
要查询的点的数组。
- kint 或 Sequence[int],可选
返回的最近邻的数量,或从1开始返回的第k个最近邻的列表。
- eps非负浮点数,可选
返回近似最近邻;第k个返回值保证不超过到实际第k个最近邻距离的(1+eps)倍。
- p浮点数, 1<=p<=无穷大, 可选
使用哪种 Minkowski p-范数。1 是绝对值和距离(“曼哈顿”距离)。2 是通常的欧几里得距离。无穷大是最大坐标差距离。如果可能发生溢出,较大的有限 p 可能会导致 ValueError。
- distance_upper_bound非负浮点数,可选
仅返回在此距离内的邻居。这用于修剪树搜索,因此如果您正在进行一系列最近邻查询,提供最近点的最近邻居的距离可能会有所帮助。
- 工人int, 可选
用于并行处理的工人数。如果给定 -1,则使用所有 CPU 线程。默认值:1。
Added in version 1.6.0.
- 返回:
- d浮点数或浮点数数组
到最近邻居的距离。如果
x
的形状是tuple+(self.m,)
,那么d
的形状是tuple+(k,)
。当 k == 1 时,输出的最后一个维度被压缩。缺失的邻居用无限距离表示。命中按距离排序(最近的优先)。在 1.9.0 版本发生变更: 之前如果
k=None
,那么 d 是一个形状为tuple
的对象数组,包含距离列表。此行为已被移除,请改用 query_ball_point。- i整数或整数数组
self.data
中每个邻居的索引。i
与 d 的形状相同。缺失的邻居用self.n
表示。
示例
>>> import numpy as np >>> from scipy.spatial import KDTree >>> x, y = np.mgrid[0:5, 2:8] >>> tree = KDTree(np.c_[x.ravel(), y.ravel()])
要查询最近的邻居并返回压缩结果,请使用
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=1) >>> print(dd, ii, sep='\n') [2. 0.2236068] [ 0 13]
要查询最近的邻居并返回未压缩的结果,请使用
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1]) >>> print(dd, ii, sep='\n') [[2. ] [0.2236068]] [[ 0] [13]]
要查询第二近邻并返回未压缩的结果,请使用
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[2]) >>> print(dd, ii, sep='\n') [[2.23606798] [0.80622577]] [[ 6] [19]]
要查询第一和第二近邻,请使用
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=2) >>> print(dd, ii, sep='\n') [[2. 2.23606798] [0.2236068 0.80622577]] [[ 0 6] [13 19]]
或者,更具体地说
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1, 2]) >>> print(dd, ii, sep='\n') [[2. 2.23606798] [0.2236068 0.80622577]] [[ 0 6] [13 19]]