0
我在玩SciPy.Spatial中的KDQuery函数。一旦我的数据量变得非常大,我就会遇到问题。我意识到该算法不一定适用于大型数据集,但它(从源头上看)大小应该只会增加处理时间,而不会影响输出。Scipy.Spatial.KDTree.query - 大型数据集问题
这里是一个代码段:
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)
这将返回当i不在列表中的值误差(ValueError异常list.remove(X):在表X不)。对于小于10^5的数据,此代码按预期工作。
错误的一个潜在原因是正在达到递归限制。为了探索这个,我将递归深度设置为1,000,000(sys.setrecursionlimit(1000000)
)。这并不能缓解问题。
什么是'ps.common'命名空间? – 2013-03-19 15:49:09
只是处理模块级别导入的另一个文件 – Jzl5325 2013-03-19 21:12:58