Scipy ( http://www.scipy.org/ ) 提供了两个 KD Tree 类;KDTree 和 cKDTree。
cKDTree 比 KDTree 快得多,但可定制性和可查询性较差(据我从文档中得知)。
这是我的问题: 我有一个包含 300 万个二维 (X,Y) 点的列表。我需要从每个点返回 X 个单位距离内的所有点。
使用 KDtree,有一个选项可以做到这一点:KDtree.query_ball_tree()
它生成一个列表,其中包含 X 单位内的所有点与其他点的列表。但是:这个列表很大,很快就填满了我的虚拟内存(大约 7.44 亿条)。
潜在的解决方案#1:有没有办法在写入时将此列表解析为文本文件?
潜在解决方案#2:我尝试使用 for 循环(对于列表中的每个点),然后通过使用:KDtree.query_ball_point()
. 但是:这需要很长时间,因为它需要运行数百万次查询。是否有与此 KDTree 工具等效的 cKDTree?
潜在的解决方案#3:击败我,其他人有什么想法吗?