Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用exec时发生Python内存错误_Python_Arrays_Memory_Numpy - Fatal编程技术网

调用exec时发生Python内存错误

调用exec时发生Python内存错误,python,arrays,memory,numpy,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

我是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:
MemoryError回溯(最近一次调用)
C:\Python27\lib\site packages\IPython\utils\py3compat.pyc在execfile(fname,glo)中
b、 loc)
169其他:
170 filename=fname
-->171 exec编译(脚本文本,文件名,'exec'),在glob,loc中
172其他:
173 def execfile(fname,*其中):
C:\Users\User\Desktop\siml.py in()
13
14
--->15 T=zip(*Q)
16
17 G=[]
记忆错误:

因此,任何专家都可以向我解释一下,我的计算机仍然有大约1.5GB的可用内存。

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

i,j= np.indices((60, 4**10))
Q = (i+j)**2
G = np.average(Q, axis=0)   
最大的优势是:

  • 避免for循环
  • 更高效的内存使用

在本例中,没有使用
Q
的转置,因此您可能不会得到内存错误。

您可以通过以下方法更有效地实现这一点:

i,j= np.indices((60, 4**10))
Q = (i+j)**2
G = np.average(Q, axis=0)   
最大的优势是:

  • 避免for循环
  • 更高效的内存使用

在本例中,没有使用
Q
的转置,因此您可能不会得到内存错误。

i,j=np.meshgrid(np.arange(60),np.arange(4**10),index='ij',sparse=True)
相当于np.indexes并节省了一点内存。感谢您的建议,它解决了我的问题。我想知道,为什么在我的代码中它会耗尽内存,但使用np.index或np,meshgrid不会有这样的问题。此外,我的电脑还有大约1.5GB的可用内存。(I使用windows 8.1、python 2.7.6)。谢谢。@user3751276您的代码的问题是它使用列表来存储大矩阵。列表中的每个元素的长度可能超过64位,而使用索引时,每个存储的元素将获得32位。在您的版本中,存储转置的Q矩阵,并应用所需的空间。1.5GB的内存可能不足以存储所有这些内容。您正在使用Python2.7.6 64位吗?亲爱的Saullo,我正在使用Python2.7.6 32位。衷心感谢您的建议和建议。谢谢。@user3751276如果您使用64位Python,您将不会得到内存错误,因为32位版本的内存使用量限制在2GB左右,即使您的机器有更多可用的…
i,j=np.meshgrid(np.arange(60),np.arange(4**10),index='ij',sparse=True)
相当于np.index,并节省了更多的内存Dar Saullo和jtaylor,感谢您的建议,它解决了我的问题。我想知道,为什么在我的代码中它会耗尽内存,但使用np.index或np,meshgrid不会有这样的问题。此外,我的电脑还有大约1.5GB的可用内存。(I使用windows 8.1、python 2.7.6)。谢谢。@user3751276您的代码的问题是它使用列表来存储大矩阵。列表中的每个元素的长度可能超过64位,而使用索引时,每个存储的元素将获得32位。在您的版本中,存储转置的Q矩阵,并应用所需的空间。1.5GB的内存可能不足以存储所有这些内容。您正在使用Python2.7.6 64位吗?亲爱的Saullo,我正在使用Python2.7.6 32位。衷心感谢您的建议和建议。谢谢。@user3751276如果您使用Python 64位,您将不会得到内存错误,因为32位版本的内存使用限制为2GB左右,即使您的计算机有更多可用内存。。。