numpy矩阵的最大元素/大小是多少?
什么是numpy矩阵的最大元素/情况,或者说numpy矩阵的最大大小是多少?
上面的代码在变量矩阵大小时返回了内存错误……那么这到底依赖于什么环境因素呢(比如可用的连续内存量)?
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'))
问题是:什么时候以及为什么会返回“内存错误”?
附注:我在Windows上使用最新的Python和numpy(是的,我知道……)7 64位。
1 个回答
1
请查看 内存上限?。
至于为什么会出现内存错误,那是因为在为某个大对象分配内存时出现了问题。具体是哪个对象并不重要,因为在你为 res
的后面几行分配内存时,所需的内存量会比之前任何时候都要高。这是因为 numpy 矩阵在你将 r
、s
或 t
指向另一个对象(即在下一次迭代中创建的新矩阵)之前,是不会被垃圾回收的。