内存错误与numpy。排列

时间:2017-06-05 14:36:04

标签: numpy memory

使用大数字的numpy.arange时出现内存错误。我的代码如下:

import numpy as np

list = np.arange(0, 10**15, 10**3)
profit_list = []

for diff in list:
    x = do_some_calculation
    profit_list.append(x)

什么可以替代,以便我可以避免出现内存错误?

1 个答案:

答案 0 :(得分:1)

如果用生成器替换list¹,就是你做

for diff in range(10**15, 10**3):
    x = do_some_calculation
    profit_list.append(x)

然后,由于您不再启动完整列表,因此将不再导致MemoryError。但是,在这个世界中,profit_list可能会引发问题,因为您尝试添加10 ^ 12个项目。同样,您可以通过不显式存储值来解决这个问题,而是使用生成器根据需要生成它们。

¹:旁注:不要将list用作变量名,因为它会影响内置。