将稀疏矩阵行转换为密集泄漏内存

时间:2016-07-13 19:59:48

标签: python scipy sparse-matrix

在我的程序中,我有两个scipy.sparse.csr_matrix。一个只有一行而另一个实际上很大。在程序的每次迭代中,我添加和减去矩阵的行。最终我需要在单行矩阵上使用.todense()。我注意到只是调用这个函数会使用过的内存增长没有明显的原因。我需要做很多迭代,并且不能承受这个内存泄漏。

我能够编写一个简单的程序来说明我的问题:

import numpy as np
from scipy import sparse

a = sparse.csr_matrix(np.matrix(np.random.random((1, 250))))
b = sparse.csr_matrix(np.matrix(np.random.random((250, 250))))

for i in range(10000000):
    a = a - b[4]
    c = a.todense()
    print(i)

因此,当我运行上述程序时,我发现在某一点之后,使用的内存不会停止增长。

1 个答案:

答案 0 :(得分:3)

这是a bug,将在scipy 0.18.0中修复。没有解决方法。