![](/img/trans.png)
[英]Finding maximum value and their indices in a sparse lil_matrix (Scipy/Python)
[英]Python: lil_matrix vs csr_matrix in extremely large sparse matrices
我想逐步建立一個非常大的稀疏矩陣。 問題是lil_matrix
占用了大量RAM,效率低下。 例如,如果我想創建一個2000萬x 2000萬lil_matrix
,它將完全lil_matrix
我的RAM。 另一方面, csr_matrix
幾乎不占用空間。 但是,據稱csr_matrix
對修改效率低下。 有沒有其他方法可以獲得lil_matrix
的好處而不占用RAM中的這么多空間? 另外,為什么它首先占用了這么多空間,因為它應該是一個稀疏矩陣?
注意:真正的問題實際上並不是創建這么大的矩陣,而是創建以下list
:
list = [sp.lil_matrix((150,150)) for i in range(1000)]
這也炸毀了我的RAM。
我並沒有聲稱有一個完整的答案,但如果你看一下矩陣內部結構,我就會陷入困境。
In [12]: s = sparse.csr_matrix((5,5))
In [13]: s.__dict__
Out[13]:
{'_shape': (5, 5),
'data': array([], dtype=float64),
'format': 'csr',
'indices': array([], dtype=int32),
'indptr': array([0, 0, 0, 0, 0, 0], dtype=int32),
'maxprint': 50}
In [14]: s.indptr.nbytes
Out[14]: 24
In [15]: l = sparse.lil_matrix((5,5))
In [16]: l.__dict__
Out[16]:
{'_shape': (5, 5),
'data': array([[], [], [], [], []], dtype=object),
'dtype': dtype('float64'),
'format': 'lil',
'maxprint': 50,
'rows': array([[], [], [], [], []], dtype=object)}
In [17]: l.data.nbytes
Out[17]: 40
In [18]: l.rows.nbytes
Out[18]: 40
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.