我正在使用GDAL工作在Python柵格上的項目。這些柵格或圖像可能會變得很大,所以我通常在Numpy中使用內存映射來加載它們。目前我想對內存映射的Numpy陣列進行距離變換操作。我試圖使用Scipy的distance_transform_edt函數,但是,這個函數返回結果的一個副本在內存中,我最終得到一個內存錯誤。如何使用Scipy進行高效的距離變換操作?
561, in distance_transform_dataset
dest_array = ndimage.distance_transform_edt(source_array) * pixel_size
File "/usr/local/lib/python2.7/dist-packages/scipy/ndimage/morphology.py", line 2173,
in distance_transform_edt
input = numpy.atleast_1d(numpy.where(input, 1, 0).astype(numpy.int8))
MemoryError
None
很多次這樣的函數都會有'out'參數來寫結果。這個函數沒有,所以我不能寫入內存映射的numpy數組。
任何想法如何做一個大numpy陣列上的內存有效的距離變換計算將不勝感激。謝謝。
在較小的切片上執行幾個操作或修改代碼以在原地執行操作。 – jfs