Bepaling van de bytegrootte van een scipy.sparse-matrix?

Is het mogelijk om de bytegrootte van een scipy.sparse-matrix te bepalen? In NumPy kunt u de grootte van een array bepalen door het volgende te doen:

import numpy as np

print(np.zeros((100, 100, 100).nbytes)
8000000
16

1 antwoord

Een dunne matrix is ​​opgebouwd uit reguliere numpy-arrays, zodat u de bytetelling voor elk van deze kunt krijgen, net zoals een gewone array.

Als u alleen het aantal bytes van de array-elementen wilt:

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

Als u de bytetellingen van alle matrices wilt hebben die nodig zijn om de dunne matrix te bouwen, dan denk ik dat u het volgende wilt:

>>> print a.data.nbytes + a.indptr.nbytes + a.indices.nbytes
152
27
toegevoegd
Leuk, dat werkte heel goed. Ik ben meer geïnteresseerd in het eerste geval, maar het tweede geval is interessant. Vertegenwoordigt die geheugengrootte het gehele object?
toegevoegd de auteur ebressert, de bron
Nee, alleen de arrays. Zie python "> stackoverflow.com/questions/33978/… .
toegevoegd de auteur user545424, de bron
Voor coo_matrix moet dit a.col.nbytes + a.row.nbytes + a.data.nbytes zijn
toegevoegd de auteur czxttkl, de bron