首页 > 解决方案 > 解决 numpy 的 MemoryException 的正确方法是什么?

问题描述

在我的程序计算期间,使用 PCRaster 的 pcr2numpy 工具多次生成 numpy 数组。对于某些栅格它有效,但现在我得到了

numpy.core._exceptions.MemoryError: Unable to allocate 140. MiB for an array with shape (7411, 4969) and data type float32

这样做的真正原因是什么,我应该怎么做:使用后删除数组,或者使用具有更多 NaN 值的数组?

这是出现问题的代码的一部分:

allpoints = cover(firstpoints1,secondpoints)
allpoints2 = ifthen(allpoints,self.upstreamup)
array1 = pcr2numpy(allpoints2,np.nan)
array2 = pcr2numpy(ifthen(allpoints, newpointts),np.nan)
array10 = array1[~np.isnan(array1)]
array20 = array2[~np.isnan(array2)]
meann = np.nanmean(array2)

cover 是用于合并两个栅格的命令,其中 NaN 值被替换 ifthen 是一个仅采用 True 值的命令,其他一切都使 NaN 值 pcr2numpy 从栅格创建一个 numpy 数组

标签: numpyout-of-memory

解决方案


推荐阅读