遍历列表或数组时出现内存问题

内森·托马斯(Nathan Thomas)

我有这样的数组列表:

arr = [array([1,2,3,4,5]), array([1,4,6,7]) .......] 

其中包含40000个数组。理想情况下,我希望将其作为2d numpy数组使用,但我不能保证所有数组的长度都相同。

我想对列表中的所有值做一些基本的事情,例如:

out = (3*arr)+2

但是我很快就用完了内存(在32GB的计算机上),因此效率很低。我尝试遍历该列表并将结果附加到新列表中,但这同样效率低下。

是否有一种有效的方法来实现这一目标?

- - - - - - - - 编辑 - - - - - - -

arr看起来像:

[array([ 451.481649,  456.490319,  461.498989,  466.507659,  471.516329,
    476.524999,  481.533669,  486.542339,  491.551009,  496.559679,
    501.568349,  506.577019,  511.585689,  516.594359,  521.603029,
    526.611699,  531.62037 ,  536.62904 ,  541.63771 ,  546.64638 ,
    551.65505 ,  556.66372 ,  561.67239 ,  566.68106 ,  571.68973 ,
    576.6984  ,  581.70707 ,  586.71574 ,  591.72441 ,  596.73308 ,
    601.74175 ,  606.75042 ,  611.75909 ,  616.76776 ,  621.77643 ,
    626.7851  ,  631.79377 ,  636.80244 ,  641.811111,  646.819781,
    651.828451,  656.837121,  661.845791,  666.854461,  671.863131]),
array([ 451.481649,  456.490319,  461.498989,  466.507659,  471.516329,
    476.524999,  481.533669,  486.542339,  491.551009,  496.559679,
    501.568349,  506.577019,  511.585689,  516.594359,  521.603029,
    526.611699,  531.62037 ,  536.62904 ,  541.63771 ,  546.64638 ,
    551.65505 ,  556.66372 ,  561.67239 ,  566.68106 ,  571.68973 ,
    576.6984  ,  581.70707 ,  586.71574 ,  591.72441 ,  596.73308 ,
    601.74175 ,  606.75042 ,  611.75909 ,  616.76776 ,  621.77643 ,
    626.7851  ,  631.79377 ,  636.80244 ,  641.811111,  646.819781,
    651.828451,  656.837121,  661.845791,  666.854461,  671.863131]),
array([ 451.481649,  456.490319,  461.498989,  466.507659,  471.516329,
    476.524999,  481.533669,  486.542339,  491.551009,  496.559679,
    501.568349,  506.577019,  511.585689,  516.594359,  521.603029,
    526.611699,  531.62037 ,  536.62904 ,  541.63771 ,  546.64638 ,
    551.65505 ,  556.66372 ,  561.67239 ,  566.68106 ,  571.68973 ,
    576.6984  ,  581.70707 ,  586.71574 ,  591.72441 ,  596.73308 ,
    601.74175 ,  606.75042 ,  611.75909 ,  616.76776 ,  621.77643 ,
    626.7851  ,  631.79377 ,  636.80244 ,  641.811111,  646.819781,
    651.828451,  656.837121,  661.845791,  666.854461,  671.863131])]
埃罗尔

如果您确实像写的那样执行此操作,则很可能会遇到内存问题,因为

out = (3*arr)+2

复制您的数组3次,然后尝试附加到它。该常数越大,数组获得的空间就越大,从而导致内存爆炸。

要实现您想要的而不会出现内存问题,请使用

out = [[3*x + 2 for x in arr_list] for arr_list in arr]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遍历嵌套 JavaScript 数组时出现问题

来自分类Dev

了解对象列表的Python内存分配时出现问题

来自分类Dev

创建大列表或字典或数组时出现内存错误

来自分类Dev

创建大列表或字典或数组时出现内存错误

来自分类Dev

遍历数组时从状态访问值时出现问题

来自分类Dev

遍历列表时出现Nullpointer异常

来自分类Dev

使用大量UIImage时出现内存问题

来自分类Dev

产生火花时出现内存问题

来自分类Dev

连续录制音频时出现内存问题

来自分类Dev

产生火花时出现内存问题

来自分类Dev

从MySQL写入文件时出现内存问题

来自分类Dev

循环遍历元组列表时的迭代问题

来自分类Dev

Python(附加列表时出现内存错误)

来自分类Dev

扩展列表时出现内存错误

来自分类Dev

绘制大型数组时出现内存错误

来自分类Dev

使用数组列表时内存泄漏

来自分类Dev

数组列表出现问题

来自分类Dev

撤消/重做时释放内存时出现问题

来自分类Dev

撤消/重做时释放内存时出现问题

来自分类Dev

使用多个列表时出现问题

来自分类Dev

加载链接列表时出现问题

来自分类Dev

打印多维数组时出现问题

来自分类Dev

输出多维数组时出现问题

来自分类Dev

在C中处理数组时出现的问题

来自分类Dev

输出多维数组时出现问题

来自分类Dev

显示数组 php 时出现的问题

来自分类Dev

向C中的动态数组添加整数,出现内存问题

来自分类Dev

递归遍历列表时出现Prolog怪异错误

来自分类Dev

循环遍历使用 Hibernate 查询填充的列表时出现 ClassCastException