我有这样的数组列表:
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] 删除。
我来说两句