循环中的python numpy数组内存错误

时间:2014-12-11 05:57:28

标签: python arrays numpy large-data

使用大型numpy数组时,我遇到了一个非常奇怪的问题。这是基本的背景。我有大约15个配对对象列表,我正在为它构建邻接矩阵。每个邻接矩阵大约为4000 x 4000(方形矩阵,其中对角线表示对象与自身配对),因此它很大但不是太大。这是我的代码的基本设置:

def createAdjacencyMatrix(pairedObjectList, objectIndexList):
   N = len(objectIndexList)
   adj = numpy.zeros((N,N))
   for i in range(0, len(pairedObjectList):
      #put a 1 in the correct row/column position for the pair etc.

   return adj

在我的脚本中,我将此函数调用大约15次,每个配对对象列表一次。但是每次我运行它都会出现这个错误:

    adj = np.zeros((N,N))
MemoryError

我真的不明白内存错误的来源。即使我制作了这个大矩阵,它只存在于该函数的范围内,所以每次函数完成时都不应该从内存中清除它?更不用说,如果相同的变量在内存中闲置,那么它不应该只是覆盖那些内存位置吗?

理解这一点的任何帮助都非常感激。

编辑:这里是追溯的完整输出

Traceback (most recent call last):
  File "create_biogrid_adjacencies.py", line 119, in <module>
    adjMat = dsu.createAdjacencyMatrix(proteinList,idxRefDict)
  File "E:\Matt\Documents\Research\NU\networks_project\data_setup_utils.py", line 18, in createAdjacencyMatrix
    adj = np.zeros((N,N))
MemoryError

0 个答案:

没有答案