Python numpy矩阵的最大元素/大小?

Python numpy矩阵的最大元素/大小?,python,windows,memory-management,matrix,numpy,Python,Windows,Memory Management,Matrix,Numpy,numpy矩阵的最大元素/大小是多少,或者numpy矩阵的最大大小是多少 上面的代码返回可变矩阵大小的内存错误…那么它依赖于什么环境因素(可用内存的顺序数量?) 问题:何时以及为什么返回“内存错误” 注:我使用windows上最后一个可用的python和numpy(是的,我知道…)7 64位。请参阅 至于当它返回内存错误时,答案是当为一个大对象分配内存时。它可以是任何一个,因为当您分配后面的res行时,您的内存量将比以往任何时候都要大,因为numpy矩阵只有在您将r、s或t指向另一个对象(在下一

numpy矩阵的最大元素/大小是多少,或者numpy矩阵的最大大小是多少

上面的代码返回可变矩阵大小的内存错误…那么它依赖于什么环境因素(可用内存的顺序数量?)

问题:何时以及为什么返回“内存错误”

注:我使用windows上最后一个可用的python和numpy(是的,我知道…)7 64位。

请参阅


至于当它返回内存错误时,答案是当为一个大对象分配内存时。它可以是任何一个,因为当您分配后面的
res
行时,您的内存量将比以往任何时候都要大,因为numpy矩阵只有在您将
r
s
t
指向另一个对象(在下一次迭代中创建的新矩阵)之后才会被垃圾收集.

res
在每个循环中被重写。我想这不是你的意图?您的最后一行错误,应该是
w=numpy.mat(res,dtype='f8')
。如果原始代码中未覆盖
ret
,则可能会出现内存错误,因为生成的列表太大。内部两个循环可以替换为
r=np.random.random((ret,ret))
此外,内存错误可能来自于您正在构建的列表,而不是numpy。使用嵌套列表创建numpy数组比直接创建要占用的内存多得多。7000x7000一点也不大。
for ret in xrange(5000,7000,50):

   res = []
   for x in xrange(ret):
       temp=[]
       for y in xrange(ret):
           temp.append(random.random())
       res.append(temp)

  print "r"
  r = numpy.mat(res)
  print "s"
  s = numpy.mat(res,dtype='f4')
  print "t"
  w = numpy.mat(res,dtype('f8'))