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])在 self 和 other 之间查找所有成对点的距离至多为 r
query_pairs
(self, r[, p, eps, output_type])在 self 中查找所有成对点的距离至多为 r。
sparse_distance_matrix
(self, other, max_distance)计算稀疏距离矩阵