小编Dou*_*oug的帖子

如何使用 Scipy 进行内存高效的距离变换操作?

我正在使用 GDAL 在 Python 中处理一个项目来处理 GIS 栅格。这些光栅或图像可能会变得相当大,所以我通常使用 Numpy 中的内存映射来加载它们。目前我想对内存映射的 Numpy 数组进行距离变换操作。我试图使用 Scipy 的distance_transform_edt函数,但是,该函数返回内存中结果的副本,最终出现内存错误。

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    
Run Code Online (Sandbox Code Playgroud)

很多时候,像这样的函数会有一个“out”参数来写入结果。这个函数没有,所以我不能写入内存映射的 numpy 数组。

关于如何在大型 numpy 数组上进行内存高效距离变换计算的任何想法将不胜感激。谢谢。

python memory numpy scipy

3
推荐指数
1
解决办法
1039
查看次数

标签 统计

memory ×1

numpy ×1

python ×1

scipy ×1