我正在处理一个项目,需要使用for循环加载磁盘上保存的大量numpy
数组。我使用的系统是Linux。你知道吗
下图显示了进程中的内存使用情况
如您所见,buff/cache
下的不可用内存部分甚至可能比已用内存大。这部分内存保存了什么?我怎样才能减少它?你知道吗
用于加载数组的脚本如下所示:
import numpy as np
tmp = []
slice1, slice2 = [], []
for item in hashes:
# np.load(item) has a shape (50, 96)
tmp.append(np.load(item))
tmp = np.concatenate(tmp, axis=0)
mask1 = # a mask used for slicing, a third of the entries will be selected
mask2 = # a different mask for slicing, a third of the entries will be selected
slice1 = tmp[mask1]
slice2 = tmp[mask2]
根据显示的短代码段,您可能正在将Numpy ndarray对象转换为列表对象,同时对它们进行操作。尝试使用所有Numpy对象和方法。也要尽量避免for循环,而是使用Numpy矢量化操作。56GB是一个巨大的内存量。哎呀!:-)
可能的Numpy代码:
Numpy垂直堆叠方法文档:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.vstack.html
希望这能解决你的问题。稍后我会做更多的测试,并编辑我的答案。你知道吗
相关问题 更多 >
编程相关推荐