Python 添加大型csr矩阵时出现内存错误

Python 添加大型csr矩阵时出现内存错误,python,matrix,addition,csr,Python,Matrix,Addition,Csr,我不确定之前是否讨论过这一点,所以让我打开一个线程: 添加大型csr矩阵时出现内存错误。我编写了一个矩阵指数的递归近似,应用于另一个矩阵V,即exp(-I H t)V,使用泰勒级数: import gc def my_expm(H,V): v = V i = 1 gc.collect() while i <= 60: v = -1j/i*H.dot(v) gc.collect() V += v gc.colle

我不确定之前是否讨论过这一点,所以让我打开一个线程:

添加大型csr矩阵时出现内存错误。我编写了一个矩阵指数的递归近似,应用于另一个矩阵V,即exp(-I H t)V,使用泰勒级数:

import gc
def my_expm(H,V):
  v = V
  i = 1
  gc.collect()
  while i <= 60:
        v = -1j/i*H.dot(v)
        gc.collect()
        V += v
        gc.collect()
        print i
        i += 1
  return V
导入gc
def my_expm(H,V):
v=v
i=1
gc.collect()

而我的问题是,在某一点上,矩阵正在从稀疏转换为稠密?在这一点上,它变得相当粗。这很可能是。但是由于我已经将错误定位到行
V+=V
,我假设scipy可以添加矩阵,而不必首先将它们转换为稠密矩阵。
1
2
3
4
5
6
Traceback (most recent call last):
File "TFI.py", line 224, in <module>
  UF = my_expm(t*H,UF)
File "TFI.py", line 202, in my_expm
  V += v
File "~/.conda/envs/exact_diag/lib/python2.7/site-    
packages/scipy/sparse/compressed.py", line 351, in __add__
  return self._binopt(other,'_plus_')
File "~/.conda/envs/exact_diag/lib/python2.7/site-  
packages/scipy/sparse/compressed.py", line 1103, in _binopt
  data = np.empty(maxnnz, dtype=upcast(self.dtype, other.dtype))
MemoryError