senthil caesar
senthil caesar

Reputation: 1

Numpy Matrix Memory size low compared to Numpy Array

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

Answers (1)

user2357112
user2357112

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

Related Questions