这两种算法有什么区别?
5jdjgkvh1#
cKDTree是KDTree的一个子集,用Cython Package 的C++实现,因此速度更快。他们每个人都是返回一个二叉trie,其每个节点表示一个轴对齐的超矩形。每个节点指定一个轴,并根据点在该轴上的坐标是大于还是小于特定值来拆分点集。但是KDTree也支持所有邻居查询,包括点数组和其他kd树。这些确实使用了相当有效的算法,但是kd树不一定是这类计算的最佳数据结构。
bzzcjhmw2#
在一个用例中(在KDTree中查找大约100K个点的5D最近邻),cKDTree比KDTree快大约12倍。
6jjcrrmo3#
目前,两者的API几乎相同,并且cKDTree比KDTree更快。因此,在不久的将来,SciPy开发人员计划删除KDTree,并且cKDTree将以向后兼容的方式重命名为KDTree。参考:详细的SciPy路线图- SciPy v1.6.0.dev参考指南https://docs.scipy.org/doc/scipy/reference/roadmap-detailed.html#spatial
cKDTree
KDTree
qlckcl4x4#
当前的(v1.8)SciPy文档声明scipy.spatial.cKDTree现在已被弃用,并被功能相同的scipy.spatial.KDTree所取代。Here是音符:cKDTree在功能上与KDTree相同。在SciPy v1.6.0之前,cKDTree有更好的性能和稍微不同的功能,但现在这两个名称的存在只是为了向后兼容的原因。如果与SciPy〈1.6的兼容性不是一个问题,请首选KDTree。
4条答案
按热度按时间5jdjgkvh1#
cKDTree是KDTree的一个子集,用Cython Package 的C++实现,因此速度更快。
他们每个人都是
返回一个二叉trie,其每个节点表示一个轴对齐的超矩形。每个节点指定一个轴,并根据点在该轴上的坐标是大于还是小于特定值来拆分点集。
但是KDTree
也支持所有邻居查询,包括点数组和其他kd树。这些确实使用了相当有效的算法,但是kd树不一定是这类计算的最佳数据结构。
bzzcjhmw2#
在一个用例中(在KDTree中查找大约100K个点的5D最近邻),cKDTree比KDTree快大约12倍。
6jjcrrmo3#
目前,两者的API几乎相同,并且
cKDTree
比KDTree
更快。因此,在不久的将来,SciPy开发人员计划删除KDTree
,并且cKDTree
将以向后兼容的方式重命名为KDTree
。参考:详细的SciPy路线图- SciPy v1.6.0.dev参考指南https://docs.scipy.org/doc/scipy/reference/roadmap-detailed.html#spatial
qlckcl4x4#
2022年更新:不赞成使用cKDTree
当前的(v1.8)SciPy文档声明scipy.spatial.cKDTree现在已被弃用,并被功能相同的scipy.spatial.KDTree所取代。
Here是音符:
cKDTree在功能上与KDTree相同。在SciPy v1.6.0之前,cKDTree有更好的性能和稍微不同的功能,但现在这两个名称的存在只是为了向后兼容的原因。如果与SciPy〈1.6的兼容性不是一个问题,请首选KDTree。