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


Python scipy spatial.KDTree用法及代码示例


用法:

class scipy.spatial.KDTree(data, leafsize=10)

kd-tree用于快速查找nearest-neighbor

此类提供一组k-dimensional点的索引,这些索引可用于快速查找任何点的最近邻居。

参数:

data(N,K) array_like

要索引的数据点。此数组不会被复制,因此修改此数据将导致伪造的结果。

leafsizeint, 可选参数

算法切换到蛮力的点数。必须是积极的。

异常:

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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。