python数组,内存消耗巨大

标签 python arrays numpy

我有一个很大的文件,第一行是一个字符串,其他行代表整数。列数是可变的,取决于行。 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/

相关文章:

javascript - Angular ng-repeat 不适用于我的数组

javascript - 扫雷算法解决方案

python - 在 ndarray 中逐行计算唯一元素

python - 稀疏矩阵上 hstack 的类型错误

python - 如何在Python中优化时间步长算法?

python - Python中IF语句的评估

python - 如何按字符串中最后找到的数字拆分字符串?

python - OpenERP fields.function() 解释

python - 如何在模板中打印上下文内容?

Javascript - 在多维数组中查找多个值