【发布时间】:2011-07-20 08:20:30
【问题描述】:
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'))
问题:它何时以及为什么返回“内存错误”?
ps:我使用 Windows 上可用的最后一个 python 和 numpy(是的,我知道...) 7 64bit。
【问题讨论】:
-
res在每个循环中被覆盖。我想这不是你的本意?你最后一行错了,应该是w = numpy.mat(res,dtype='f8')。如果ret没有在您的原始代码中被覆盖,您可能会收到 MemoryError,因为结果列表太大。 -
你的内部两个循环可以替换为
r = np.random.random((ret, ret)) -
另外,您的内存错误可能来自您正在构建的列表,而不是 numpy。使用嵌套列表创建一个 numpy 数组将使用比直接创建更多的内存。 7000x7000 根本不是很大。
标签: python windows memory-management matrix numpy