我是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的可用内存。
答案 0 :(得分:4)
您可以通过以下方式更有效地实现这一目标:
i,j= np.indices((60, 4**10))
Q = (i+j)**2
G = np.average(Q, axis=0)
最大的优点是:
在此示例中,未使用Q
的转置,因此您可能不会收到内存错误。