Python numpy矩阵的最大元素/大小?
numpy矩阵的最大元素/大小是多少,或者numpy矩阵的最大大小是多少 上面的代码返回可变矩阵大小的内存错误…那么它依赖于什么环境因素(可用内存的顺序数量?) 问题:何时以及为什么返回“内存错误” 注:我使用windows上最后一个可用的python和numpy(是的,我知道…)7 64位。请参阅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指向另一个对象(在下一
至于当它返回内存错误时,答案是当为一个大对象分配内存时。它可以是任何一个,因为当您分配后面的
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'))