用法:
class scipy.spatial.KDTree(data, leafsize=10)
kd-tree用于快速查找nearest-neighbor
此类提供一组k-dimensional点的索引,这些索引可用于快速查找任何点的最近邻居。
参数:
- data:(N,K) array_like
要索引的数据点。此数组不会被复制,因此修改此数据将导致伪造的结果。
- leafsize:int, 可选参数
算法切换到蛮力的点数。必须是积极的。
异常:
- RuntimeError
对于大型数据集,可以超过最大递归限制。如果发生这种情况,请通过以下方式增加leafsize参数的值或通过以下方式增加递归限制:
>>> import sys >>> sys.setrecursionlimit(10000)
注意:
Maneewongvatana和Mount 1999中描述了使用的算法。一般的想法是kd-tree是一个二叉树,其每个节点代表一个axis-aligned超矩形。每个节点指定一个轴,并根据其沿该轴的坐标是大于还是小于特定值来拆分点集。
在构造过程中,通过“sliding midpoint”规则选择轴和分割点,这确保了单元不会全部变长和变薄。
可以查询树以查找任何给定点的r个最近邻居(可选地,仅返回该点的最大距离内的那些邻居)。对于r个近似最接近的邻居,也可以查询它,从而大大提高了效率。
对于大尺寸(20已经很大),不要指望它比蛮力快得多。高维nearest-neighbor查询是计算机科学中的一个实质性开放问题。
该树还支持all-neighbors查询,既可以使用点数组,也可以使用其他kd-trees查询。它们确实使用了相当有效的算法,但是kd-tree不一定是此类计算的最佳数据结构。
方法:
count_neighbors
(self, other, r[, p])计算附近可以形成多少对。
query
(self, x[, k, eps, p, distance_upper_bound])查询kd-tree附近的邻居
query_ball_point
(self, x, r[, p, eps])查找点x的距离r内的所有点。
query_ball_tree
(self, other, r[, p, eps])查找距离最大为r的所有点对
query_pairs
(self, r[, p, eps])查找距离内的所有对点。
sparse_distance_matrix
(self, other, max_distance)计算稀疏距离矩阵
innernode
leafnode
node
源码:
scipy.spatial.KDTree的API实现见:[源代码]
注:本文由纯净天空筛选整理自 scipy.spatial.KDTree。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。