我正在使用两个大型数据集(三维点的坐标)。第一个数据集有大约一百万个点(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"
当我为测试用例(小尺寸的Data1和Data2)运行此脚本时,它运行正常,但是当我针对实际情况运行它(数据1为~1 mil,Data2为~50 mil)时,我得到以下输出(和错误消息)。
KDTree created
Killed: 9
我怀疑query_ball_tree需要比计算机更多的内存。我正在使用配备16 GB(1867 MHz DDR3)内存和3.1 GHz(Intel Core i7)处理器的Mac。
有人可以建议替代cKDTree(或query_ball_tree)需要更少的内存吗?我将很感激有任何有用的回应。