2012-06-23 6 views

risposta

26

Una matrice sparsa è costruito da array NumPy regolari, in modo da poter ottenere il conteggio di byte per una di queste proprio come si farebbe una serie regolare .

Se si desidera solo il numero di byte degli elementi di matrice:

>>> from scipy.sparse import csr_matrix 
>>> a = csr_matrix(np.arange(12).reshape((4,3))) 
>>> a.data.nbytes 
88 

Se si desidera che il conteggio dei byte di tutte le matrici necessarie per costruire la matrice sparsa, allora penso che si desidera:

>>> print a.data.nbytes + a.indptr.nbytes + a.indices.nbytes 
152 
+0

Bello, ha funzionato molto bene. Sono più interessato al primo caso, ma il secondo caso è interessante. Quella dimensione della memoria rappresenta l'intero oggetto? – ebressert

+0

No, solo gli array. Vedi http://stackoverflow.com/questions/33978/find-out-how-much-memory-is-being-used-by-an-object-in-python. – user545424

+2

Per coo_matrix, dovrebbe essere a.col.nbytes + a.row.nbytes + a.data.nbytes – czxttkl