【问题标题】:Max element/size of a numpy matrix?numpy矩阵的最大元素/大小?
【发布时间】: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


【解决方案1】:

Upper memory limit?

至于什么时候返回内存错误,答案是为其中一个大对象分配内存的时候。它可以是任何一个,因为当您分配res 的后面几行时,您的内存量将比以往任何时候都多,因为直到您指向 @ 之后,numpy 矩阵才会被垃圾收集987654323@、st 在另一个对象(在下一次迭代中创建的新矩阵)。

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 2015-06-24
    • 2017-10-08
    • 2014-08-02
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多