使用大型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