scipy.spatial.KDTree 和 scipy.spatial.cKDTree 之间的区别

问题描述 投票:0回答:4

这两种算法有什么区别?

python scipy kdtree
4个回答
52
投票

从 SciPy 1.6 开始,cKDTree 和 KDTree 是相同的,如果您不担心 1.6 之前的兼容性,您应该更喜欢 KDTree。

在 SciPy 1.6 之前,cKDTreeKDTree 的子集,用 Cython 封装的 C++ 实现,因此速度更快。


16
投票

在用例中(在具有大约 100K 点的 KDTree 中进行 5D 最近邻查找),cKDTree 比 KDTree 快约 12 倍。


6
投票

2022 年更新:cKDTree 已弃用

当前 (v1.8) SciPy 文档指出 scipy.spatial.cKDTree 现已弃用,并被功能相同的 scipy.spatial.KDTree 取代。

这里是注释:

cKDTree 在功能上与 KDTree 相同。在 SciPy v1.6.0 之前,cKDTree 具有更好的性能和略有不同的功能,但现在这两个名称仅出于向后兼容的原因而存在。如果与 SciPy 兼容 < 1.6 is not a concern, prefer KDTree.


2
投票

目前,两者的API几乎相同,并且

cKDTree
KDTree
更快。 因此,在不久的将来,SciPy 开发人员计划删除
KDTree
,并且
cKDTree
将以向后兼容的方式重命名为
KDTree

参考: 详细的 SciPy 路线图 — SciPy v1.6.0.dev 参考指南 https://docs.scipy.org/doc/scipy/reference/roadmap-detailed.html#spatial

© www.soinside.com 2019 - 2024. All rights reserved.