Python内存错误调用exec

时间:2014-06-18 06:59:39

标签: python arrays memory numpy

我是python的新手,下面是我的代码,

import numpy as np 

val = 4**10
Q = []
for j in range(60):
    a = []
    for i in range(val):
        tmp = (i+j)**2
        a.append(tmp)
    Q.append(a)
T= zip(*Q)
G = []
for t in T:
    tmps2 = np.average(t)
    G.append(tmps2)

以下是我的代码错误:

MemoryError                               Traceback (most recent call last)
C:\Python27\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glo
b, loc)
    169             else:
    170                 filename = fname
--> 171             exec compile(scripttext, filename, 'exec') in glob, loc
    172     else:
    173         def execfile(fname, *where):

C:\Users\User\Desktop\simpl.py in <module>()
     13
     14
---> 15 T= zip(*Q)
     16
     17 G = []

MemoryError:

所以,任何专家都可以向我解释,我的电脑仍有大约1.5GB的可用内存。

1 个答案:

答案 0 :(得分:4)

您可以通过以下方式更有效地实现这一目标:

i,j= np.indices((60, 4**10))
Q = (i+j)**2
G = np.average(Q, axis=0)   

最大的优点是:

  • 避免使用for循环
  • 更有效的内存使用情况。

在此示例中,未使用Q的转置,因此您可能不会收到内存错误。