Python之kdtree库函数介绍
安装
使用anaconda的命令行安装
conda install kdtree
库函数介绍
class Node
函数名 | 输入参数 | 函数功能 |
---|---|---|
Node(data, left, right) | 结点数据;左子结点;右子结点 | 创建结点实例 |
node.is_leaf | - | 返回布尔值,判断是否为叶子结点 |
node.preorder | - | 结点处先序遍历,返回一个迭代器 |
node.inorder | - | 结点处中序遍历,返回一个迭代器 |
node.postorder | - | 结点处后序遍历,返回一个迭代器 |
node.children | - | 返回结点的所有孩子结点的一个迭代器 |
node.set_child(index, child) | index为0表示修改左孩子结点,否则表示修改右孩子结点;child为要修改的值 | 修改结点的孩子结点 |
node.height | - | 返回子树的高度 |
node.get_child_pos(child) | - | 给定孩子结点,返回其父结点的位置 |
class KDNode
函数名 | 输入参数 | 函数功能 |
---|---|---|
KDNode(data=None,left=None,right=None,axis=None,sel_axis=None, dimensions=None) | 数据;左子结点;右子结点;从某个维度开始进行切割;下一次切割时(即创建子结点时维度的变化方式) | 创建结点实例 |
kdnode.add(point) | - | 向当前节点添加一个点,或以迭代方式下行到其子节点之一。 |
kdnode.create_subnode(data) | - | 为当前结点创建子结点 |
kdnode.find_replacement() | - | 寻找当前结点的替代 |
kdnode.remove(point,node=Node) | - | 移除指定的结点,返回子树的新的根结点 |
kdnode.is_balanced | - | 检测kd树是否平衡 |
kdnode.rebalance | - | 重新平衡kd树,并返回可能的根结点 |
kdnode.axis_dist(point, axis) | - | 计算指定维度上结点数据与给定数据的平方距离 |
kdnode.dist(point) | - | 计算结点数据与给定数据的平方距离 |
kdnode.search_knn(point, k, dist=None) | dist是一个计算距离的lambda表达式 | 寻找给定数据的k个临近点 |
kdnode.search_nn(point, dist=None) | - | 寻找最近邻点 |
kdnode.search_nn_dist(point, distance, best=None) | - | 寻找给定距离范围内的最邻近点 |
kdnode.is_valid | - | 检测kd树是否有效 |
kdnode.extreme_child(sel_func, axis) | 返回子树的一个孩子和它的父亲 |
全局函数
函数名 | 输入参数 | 函数功能 |
---|---|---|
visualize(tree, max_level=100, node_width=10, left_padding=5) | - | 打印kd树 |
level_order(tree, include_all=False) | include_all:如果为True则包含空结点,用None表示 | 返回一个迭代器,逐层遍历 |
create(point_list=None, dimensions=None, axis=0, sel_axis=None) | axis表示从某个维度开始进行切割;sel_axis是一个lambda表达式,表示所选择的axis | 从数据列表创建kd树 |