参考链接:scipy.spatial.cKDTree — SciPy v0.15.0 Reference Guide
类 scipy.spatial.cKDTree
用于快速最近邻查找的kd-tree
这个类提供了一组k维点的索引,可用于快速查找任意点的最近邻。
所使用的算法在Maneewongvatana and Mount 1999中有描述。一般的思想是kd树是一个二叉树,它的每个节点表示一个轴对齐的超矩形。每个节点指定一个轴,并根据它们在该轴上的坐标是否大于或小于某个特定值来分割点集。
在构造过程中,轴和分割点是由“滑动中的点”规则选择的,这确保了单元格不会都变得又长又薄。
可以查询树中任意给定点的r个最近邻居(可选择只返回与该点最大距离内的邻居)。它还可以查询r个大致最近的邻居,这在效率上有很大的提高。
对于大维度(20已经很大了),不要指望它比蛮力运行得快得多。高维最近邻查询是计算机科学中一个重要的开放问题。
参数:
data:类数组,形状为(n,m)
要索引的m维的n个数据点。除非需要生成一个连续的doubles数组,否则不会复制此数组,因此修改此数据将导致伪结果。
leafsize:正整数
算法切换到蛮力算法的点数。
属性
data
leafsize
m
maxes
mins
n
方法
count_neighbors(self, other, r, p) 数一下附近能形成多少对。
query(self, x[, k, eps, p, distance_upper_bound]) 查询最近邻的kd-tree。
参数:x:类数组,最后一个维度self.m
要查询的点的数组
k:整数
返回的最近邻的个数
返回值:d:浮点数数组
query_ball_points(self, x, r, p, eps) 找出点(s) x距离r内的所有点。
query_ball_tree(self, other, r, p, eps) 找出所有距离最大为r的点对。
query_pairs(self, r, p, eps) 找出所有距离最大为r的点对。
sparse_distance_matrix(self, other, max_distance) 计算一个稀疏距离矩阵。