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