我有带有未排序(X,Y)点的大型二维数组,我需要知道哪些点彼此非常接近(最近邻查找)。我已经成功地使用了 cKDTree 和 query_ball_tree 来处理大约 500,000 (X,Y) 点的数组。但是,当我对超过 1,000,000 个点的数据集尝试相同的算法时,query_ball_tree 会导致 MemoryError。
我使用具有 16Gb 内部内存的 64 位 Windows,并尝试了 32 位和 64 位版本的 Python 和扩展模块(scipy 和 numpy)。
def Construct_SearchTree(AllXyPoints):
KDsearch = cKDTree(AllXyPoints)
return KDsearch.query_ball_tree(KDsearch, Maxdist)
我的问题:
1) 有人知道 cKDTree / query_ball_tree 的替代品消耗更少的内存吗?在这种情况下,速度不如内存使用重要。
2) 我希望从 32 位切换到 64 位 python 和扩展可以解决 MemoryError。它没有的原因可能是什么?
感谢您的帮助和建议。