scipy.spatial.

cKDTree#

class scipy.spatial.cKDTree(data, leafsize=16, compact_nodes=True, copy_data=False, balanced_tree=True, boxsize=None)#

用于快速最近邻查找的 kd 树

此类提供对一组 k 维点的索引,该索引可用于快速查找任何点的最近邻点。

注意

cKDTree在功能上与KDTree相同。在 SciPy v1.6.0 之前,cKDTree具有更好的性能和稍微不同的功能,但现在这两个名称仅仅出于向后兼容的原因而存在。如果兼容性与 SciPy < 1.6 无关,则应优先考虑 KDTree

参数:
数据array_like,形状为 (n,m)

用于编制索引的 n 个维度为 m 的数据点。该数组不会被复制,除非有必要生成双精度连续数组;修改此数据会导致错误的结果。如果 kd 树使用 copy_data=True 构建,则数据也会被复制。

叶大小正整数,可选

算法切换到蛮力法的点数。默认值为:16。

紧凑节点布尔值,可选

如果为 True,则 kd 树将基于实际数据范围来收缩超矩形。这通常可生成一个更紧凑的树,该树对于退化的输入数据更有鲁棒性并且查询速度更快,但构建时间更长。默认值为:True。

复制数据布尔值,可选

如果为 True,则始终复制数据以防止 kd 树出现数据损坏。默认值为:False。

平衡树布尔值,可选

如果为 True,则使用中值分割超矩形,而不是中点。这通常可生成一个更紧凑的树并且查询速度更快,但构建时间更长。默认值为:True。

框大小array_like 或标量,可选

对 KD 树应用 m 维环形拓扑。该拓扑由 \(x_i + n_i L_i\) 生成,其中 \(n_i\) 为整数并且 \(L_i\) 为第 i 维的框大小。输入数据应包装为 \([0, L_i)\)。如果任何数据超出此范围,则会引发 ValueError。

注释

所使用的算法在 Maneewongvatana 和 Mount 1999 中进行了描述。一般想法是 kd 树是一个二叉树,其每个节点表示一个轴对齐的超矩形。每个节点指定一个轴,并基于点沿着该轴的坐标大于或小于特定值来分割该组点。

在构建过程中,将根据“滑动中点”规则选择轴和切分点,这可确保单元格不会变得又长又细。

可以按任何给定点的 r 个最近邻元查询树(可以选择仅返回点最大距离内的邻元)。还可以以大幅提升效率的方式查询 r 个最近似邻元。

对于大维度(20 已是较大维度),切勿指望它比蛮力方法运行速度明显更快。高维最近邻元查询是计算机科学中的一个重大悬而未决的问题。

属性:
数据ndarray,形状为 (n,m)

m 维 n 个数据点以索引形式。此数组不会被复制,除非有必要生成一个连续的双精度数组。如果将 kd 树构建为 copy_data=True,则也会复制数据。

leafsize正整数

算法切换到蛮力的点数。

m整数

单个数据点的维度。

n整数

数据点的数量。

maxesndarray,形状为 (m,)

n 个数据点在每维中的最大值。

minsndarray,形状为 (m,)

n 个数据点在每维中的最小值。

tree对象,cKDTreeNode 类

该属性公开 cKDTree 对象中根节点的 Python 视图。首次访问时以动态方式创建 kd 树的完整 Python 视图。该属性允许您在 Python 中创建自己的查询函数。

size整数

树中的节点数。

方法

count_neighbors(self, other, r[, p, ...])

计数可以形成多少附近的对。

query(self, x[, k, eps, p, ...])

对 kd 树查询最近邻

query_ball_point(self, x, r[, p, eps, ...])

查找距离点 x(们) r 以内的所有点。

query_ball_tree(self, other, r[, p, eps])

selfother 之间查找所有成对点的距离至多为 r

query_pairs(self, r[, p, eps, output_type])

self 中查找所有成对点的距离至多为 r。

sparse_distance_matrix(self, other, max_distance)

计算稀疏距离矩阵