Scipy(http://www.scipy.org/)提供了两个KD树类:KDTree和cKDTree。
cKDTree速度更快,但可定制性和查询能力不如KDTree(从文档中可以看出)。
我的问题是:我有一个包含3百万个二维(X,Y)点的列表。我需要返回每个点距离X单位以内的所有点。
使用KDtree时,有一种选项可以做到这一点:
解决方案1:是否有一种方法可以在写入时将此列表解析为文本文件?
解决方案2:我尝试使用for循环(对于列表中的每个点),然后通过使用
解决方案3:我不知道,还有其他人有什么想法吗?
cKDTree速度更快,但可定制性和查询能力不如KDTree(从文档中可以看出)。
我的问题是:我有一个包含3百万个二维(X,Y)点的列表。我需要返回每个点距离X单位以内的所有点。
使用KDtree时,有一种选项可以做到这一点:
KDtree.query_ball_tree()
它生成一个列表,其中包含距离每个其他点X单位以内的所有点的列表。然而:此列表非常大,并且很快就会填满我的虚拟内存(约为7.44亿个项目长)。解决方案1:是否有一种方法可以在写入时将此列表解析为文本文件?
解决方案2:我尝试使用for循环(对于列表中的每个点),然后通过使用
KDtree.query_ball_point()
查找该单个点在X单位内的邻居。然而:这需要运行数百万次查询,因此需要很长时间。是否有一个cKDTree等效于此KDTree工具?解决方案3:我不知道,还有其他人有什么想法吗?
cKDTree
与KDTree
在功能上是相同的,并具有相匹配的性能(请参见注释)。 - Gabriel