Also, I just noticed that `self.size` returns `self.nnz`, so you'll have to compare `self.nnz` to, say, `prod(self.shape)` to determine whether or not the matrix is full of nonzero values.