Python Scipy.Spatial.KDTree.query-大型数据集问题

Python Scipy.Spatial.KDTree.query-大型数据集问题,python,scipy,spatial,kdtree,Python,Scipy,Spatial,Kdtree,我正在使用SciPy.Spatial中的函数。一旦我的数据量变得非常大,我就会遇到一个问题。我意识到,该算法不一定设计为对大型数据集有效,但(从源代码上看)大小似乎只会增加处理时间,而不会影响输出 以下是一段代码片段: sizes = [ 10**i for i in range(5,6) ] #10^5 for this test data = np.random.random_integers(0,100,(sizes[-1],2)) for size in sizes: kd =

我正在使用SciPy.Spatial中的函数。一旦我的数据量变得非常大,我就会遇到一个问题。我意识到,该算法不一定设计为对大型数据集有效,但(从源代码上看)大小似乎只会增加处理时间,而不会影响输出

以下是一段代码片段:

sizes = [ 10**i for i in range(5,6) ] #10^5 for this test
data = np.random.random_integers(0,100,(sizes[-1],2))
for size in sizes:
    kd = ps.common.KDTree(data)
    nnq = kd.query(data,k=2+1, p=2)
    info = nnq[1] #This is the indices of the neighbors
    neighbors = {}
    idset = np.arange(len(info)) #Indices of the input point
    for i, row in enumerate(info):
        row = row.tolist()
        row.remove(i)
        neighbors[idset[i]] = list(row)
当我不在列表中时,返回一个值错误(ValueError list.remove(x):x不在列表中)。对于小于10^5的数据大小,此代码按预期工作


错误的一个潜在原因是达到了递归限制。为了探索这一点,我将递归深度设置为1000000(
sys.setrecursionlimit(1000000)
)。这并不能缓解问题。

错误发生在代码中的语句
行。删除(i)
。问题是随机数据集可能有重复点,有时同一点可能重复三次以上。当数据集很大时,这种情况很可能发生。发生这种情况时,点的三个最近邻居可能不包括点本身。这会导致
行中出现错误。删除(i)

什么是
ps.common
命名空间?只是处理模块级导入的另一个文件