Reputation: 1
I have a .npz file which I want to load into RAM . The compressed file size is 30MB . I am doing the following operation to load the data into RAM.
import numpy as np
from scipy import sparse
from sys import getsizeof
a = sparse.load_npz('compressed/CRS.npz').todense()
getsizeof(a)
# 136
type(a)
# numpy.matrixlib.defmatrix.matrix
b = np.array(a)
getsizeof(b)
# 64000112
type(b)
# numpy.ndarray
Why numpy.matrix
object occupy very low memory size compared to numpy.arrray
? Both a and b have same dimension and data.
Upvotes: 0
Views: 279
Reputation: 282178
Your a
matrix is a view of another array, so the underlying data is not counted towards its getsizeof
. You can see this by checking that a.base is not None
, or by seeing that the OWNDATA
flag is False
in a.flags
.
Your b
array is not a view, so the underlying data is counted towards its getsizeof
.
numpy.matrix
doesn't provide any memory savings.
Upvotes: 3