我有一个很大的文件,第一行是一个字符串,其他行代表整数。列数是可变的,取决于行。
A 有一个全局列表,我可以在其中保存我的中间结果。 arr_of_arr
是 float 列表的列表。 arr_of_arr
的长度约为 5000。此数组的每个元素(也是一个数组)的长度从 100.000 到 10.000.000。元素的最大长度可能会有所不同,因此我无法在创建 arr_of_arr 时提前扩展每个元素。
在我处理完整个文件后,我人为地添加了我计算每个全局数组和绘图的元素的平均值。max_size_arr
是数组中最长元素的长度(我当我遍历文件中的行时竞争它)
arr = [x+[0]*(max_size_arr - len(x)) for x in arr_of_arr]
我需要计算跨数组元素的均值。 例如, [[1,2,3],[4,5,6],[0,2,10]] 将导致 [5/3,9/3,19/3](数组中第一个元素的平均值,跨数组等的平均 od 第二个元素)
arr = np.mean(np.array(arr),axis=0)
但是,这会导致巨大的内存消耗(根据集群信息,大约为 100GB)。在结构意义上减少内存消耗的好的解决方案是什么? numpy 数组会比 python 中的普通数组更轻吗?
最佳答案
我认为巨大的内存消耗是因为你想把整个数组一次放在内存中。
为什么不将切片与 numpy arrays 结合使用? ?。这样做您可以模拟数据的批处理。您可以为函数提供批量大小(1000 或 10000 个数组),计算均值并将结果写入字典或文件中,指示切片及其各自的均值。
关于python数组,内存消耗巨大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34268705/