当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy KDTree.query用法及代码示例


本文简要介绍 python 语言中 scipy.spatial.KDTree.query 的用法。

用法:

KDTree.query(x, k=1, eps=0, p=2, distance_upper_bound=inf, workers=1)#

查询最近的邻居kd-tree。

参数

x 数组,最后一维 self.m

要查询的点数组。

k int 或 Sequence[int],可选

要返回的最近邻的数量,或者要返回的 k-th 最近邻的列表,从 1 开始。

eps 非负浮点数,可选

返回近似最近邻;第 k 个返回值保证不超过 (1+eps) 乘以到真正的第 k 个最近邻居的距离。

p 浮点数,1<=p<=无穷大,可选

使用哪个 Minkowski p-norm。 1 是sum-of-absolute-values 距离(“Manhattan” 距离)。 2 是通常的欧几里得距离。无穷大是maximum-coordinate-difference距离。如果发生溢出,大的有限 p 可能会导致 ValueError。

distance_upper_bound 非负浮点数,可选

仅返回此距离内的邻居。这用于修剪树搜索,因此如果您正在执行一系列nearest-neighbor 查询,它可能有助于提供到最近点的最近邻居的距离。

workers 整数,可选

用于并行处理的工作人员数量。如果指定 -1,则使用所有 CPU 线程。默认值:1。

返回

d 浮点数或浮点数数组

到最近邻居的距离。如果 x 具有形状 tuple+(self.m,) ,则 d 具有形状 tuple+(k,) 。当 k == 1 时,输出的最后一个维度被压缩。缺失的邻居用无限距离表示。命中按距离排序(最近的优先)。

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]]

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.spatial.KDTree.query。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。