SciPy cKDTree/query_-ball_-tree内存问题

2024-05-20 23:03:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理两个大型数据集(三维点的坐标)。第一个数据集有大约一百万个点(Data1),而第二个数据集有五千万个点(Data2)。我需要通过比较两个数据集来进行对计数和范围查询。目前,我正在使用scipy cKDTree(我读到它很快)。在

from scipy.spatial import cKDTree
KDTree_Data1 = cKDTree(Data1)
KDTree_Data2 = cKDTree(Data2)
print "KDTree created"
Data2_Indx = KDTree_Data1.query_ball_tree(KDTree_Data2, r=170, p=2.0, eps=0)                          
print "Something"

当我为测试用例(数据1和数据2的小尺寸)运行这个脚本时,它运行得很好,但是当我为实际情况运行它时(数据1为~1 mil,数据2为~50 mil),我得到以下输出(和错误消息)。在

^{pr2}$

我怀疑查询树比我的计算机需要更多的内存。我使用的是一款16 GB(1867 MHz DDR3)内存和3.1 GHz(Intel Core i7)处理器的Mac电脑。在

有人能提出一种替代cKDTree(或query_ball_tree)的方法吗?它需要更少的内存?如果有任何有用的答复,我将不胜感激。在


Tags: 数据内存fromtreescipyqueryspatial计数