这两种算法有什么区别?
答案 0 :(得分:34)
cKDTree是KDTree的一个子集,用C ++编写,用Cython包装,因此速度更快。
他们每个人都是
二进制trie,其每个节点代表一个轴对齐的超矩形。每个节点指定一个轴,并根据它们沿该轴的坐标是否大于或小于特定值来分割该组点。
但是KDTree
还支持所有邻居查询,包括点数组和其他kd树。这些确实使用了一种相当有效的算法,但kd-tree不一定是这种计算的最佳数据结构。
答案 1 :(得分:12)
在一个用例中(5D最近邻居在KDTree中查找大约100K点)cKDTree比KDTree快大约12倍。
答案 2 :(得分:1)
当前,两者的API几乎相同,并且cKDTree
比KDTree
快。
因此,在不久的将来,SciPy开发人员计划删除KDTree
,并且cKDTree
将以向后兼容的方式重命名为KDTree
。
参考: 详细的SciPy路线图— SciPy v1.6.0.dev参考指南http://scipy.github.io/devdocs/roadmap-detailed.html#spatial