# Create A Sparse Matrix

## Goal¶

This post aims to create a sparse matrix in python using following modules:

• Numpy
• Scipy

Reference:

• Scipy Document
• Chris Albon's blog (I look at his post's title and wrote my own contents to deepen my understanding about the topic.)

## Library¶

In :
import numpy as np
import scipy.sparse


## Create a sparse matrix using csr_matrix¶

CSR stands for "Compressed Sparse Row" matrix

In :
nrow = 10000
ncol = 10000

# CSR stands for "Compressed Sparse Row" matrix
arr_sparse = scipy.sparse.csr_matrix((nrow, ncol))
arr_sparse

Out:
<10000x10000 sparse matrix of type '<class 'numpy.float64'>'
with 0 stored elements in Compressed Sparse Row format>

## Modify elements¶

In :
arr_sparse[100, 1000] = 10.
arr_sparse

Out:
<10000x10000 sparse matrix of type '<class 'numpy.float64'>'
with 1 stored elements in Compressed Sparse Row format>

## Math Opeartion¶

In :
# Addition is not supported
arr_sparse + 1

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-16-db4353ff8482> in <module>
1 # Addition is not supported
----> 2 arr_sparse + 1

410                 return self.copy()
411             # Now we would add this scalar to every element.
--> 412             raise NotImplementedError('adding a nonzero scalar to a '
413                                       'sparse matrix is not supported')
414         elif isspmatrix(other):

NotImplementedError: adding a nonzero scalar to a sparse matrix is not supported
In :
arr_sparse - 1

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-19-d596f7afea6e> in <module>
----> 1 arr_sparse - 1

~/anaconda3/envs/py367/lib/python3.6/site-packages/scipy/sparse/base.py in __sub__(self, other)
429             if other == 0:
430                 return self.copy()
--> 431             raise NotImplementedError('subtracting a nonzero scalar from a '
432                                       'sparse matrix is not supported')
433         elif isspmatrix(other):

NotImplementedError: subtracting a nonzero scalar from a sparse matrix is not supported
In :
arr_sparse * 2

Out:
<10000x10000 sparse matrix of type '<class 'numpy.float64'>'
with 1 stored elements in Compressed Sparse Row format>
In :
arr_sparse / 2

Out:
<10000x10000 sparse matrix of type '<class 'numpy.float64'>'
with 1 stored elements in Compressed Sparse Row format>

## Min & Max¶

In :
arr_sparse.min()

Out:
0.0
In :
arr_sparse.max()

Out:
10.0