scipy.spatial.KDTree.query¶
- KDTree.query(x, k=1, eps=0, p=2, distance_upper_bound=inf, workers=1)[源代码]¶
向kd-tree查询最近的邻居。
- 参数
- xARRAY_LIKE,最后一维自定义。m
要查询的点数组。
- k整型或序列型 [int] ,可选
要返回的最近邻居的数量,或要返回的第k个最近邻居的列表,从1开始。
- eps非负浮点型,可选
返回近似最近邻居;保证第k个返回值不会超过到实际第k个最近邻居的距离的(1+EPS)倍。
- p浮动,1<=p<=无穷大,可选
使用哪个Minkowski p-范数。1是绝对值之和距离(“曼哈顿”距离)。2是通常的欧几里德距离。无穷大是最大坐标差距离。如果可能发生溢出,则大的、有限的p可能会导致ValueError。
- distance_upper_bound非负浮点型,可选
仅返回此距离内的邻居。这用于修剪树搜索,因此如果您正在执行一系列最近邻居查询,它可能有助于提供到最近点的最近邻居的距离。
- workers整型,可选
用于并行处理的工作进程数。如果给定-1,则使用所有CPU线程。默认值:1。
1.6.0 新版功能.
- 退货
- d浮点数或浮点数组
到最近邻居的距离。如果
x
有形状tuple+(self.m,)
,那么d
有形状tuple+(k,)
。当k==1时,输出的最后一个维度被压缩。丢失的邻居以无限距离表示。命中按距离排序(最近的第一个)。1.6.0 版后已移除: 如果
k=None
,那么d
是形状的对象数组tuple
,包含距离列表。此行为已弃用,将在SciPy 1.8.0中删除,请使用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]]