How to Create a Sparse Matrix in Python (original) (raw)
Last Updated : 18 Aug, 2020
If most of the elements of the matrix have 0 value, then it is called a sparse matrix. The two major benefits of using sparse matrix instead of a simple matrix are:
- Storage: There are lesser non-zero elements than zeros and thus lesser memory can be used to store only those elements.
- Computing time: Computing time can be saved by logically designing a data structure traversing only non-zero elements.
Sparse matrices are generally utilized in applied machine learning such as in data containing data-encodings that map categories to count and also in entire subfields of machine learning such as natural language processing (NLP).
Example:
0 0 3 0 4
0 0 5 7 0
0 0 0 0 0
0 2 6 0 0
Representing a sparse matrix by a 2D array leads to wastage of lots of memory as zeroes in the matrix are of no use in most of the cases. So, instead of storing zeroes with non-zero elements, we only store non-zero elements. This means storing non-zero elements with triples- (Row, Column, value).
Create a Sparse Matrix in Python
Python’s SciPy gives tools for creating sparse matrices using multiple data structures, as well as tools for converting a dense matrix to a sparse matrix. The function csr_matrix() is used to create a sparse matrix of compressed sparse row format whereas csc_matrix() is used to create a sparse matrix of compressed sparse column format.
# Using csr_matrix()
Syntax:
scipy.sparse.csr_matrix (shape=None, dtype=None)
Parameters:
shape: Get shape of a matrix
dtype: Data type of the matrix
Example 1:
Python
import
numpy as np
from
scipy.sparse
import
csr_matrix
sparseMatrix
=
csr_matrix((
3
,
4
),
`` dtype
=
np.int8).toarray()
print
(sparseMatrix)
Output:
[[0 0 0 0] [0 0 0 0] [0 0 0 0]]
Example 2:
Python
import
numpy as np
from
scipy.sparse
import
csr_matrix
row
=
np.array([
0
,
0
,
1
,
1
,
2
,
1
])
col
=
np.array([
0
,
1
,
2
,
0
,
2
,
2
])
data
=
np.array([
1
,
4
,
5
,
8
,
9
,
6
])
sparseMatrix
=
csr_matrix((data, (row, col)),
`` shape
=
(
3
,
3
)).toarray()
print
(sparseMatrix)
Output:
[[ 1 4 0] [ 8 0 11] [ 0 0 9]]
# Using csc_matrix()
Syntax:
scipy.sparse.csc_matrix (shape=None, dtype=None)
Parameters:
shape: Get shape of a matrix
dtype: Data type of the matrix
Example 1:
Python
import
numpy as np
from
scipy.sparse
import
csc_matrix
sparseMatrix
=
csc_matrix((
3
,
4
),
`` dtype
=
np.int8).toarray()
print
(sparseMatrix)
Output:
[[0 0 0 0] [0 0 0 0] [0 0 0 0]]
Example 2:
Python
import
numpy as np
from
scipy.sparse
import
csc_matrix
row
=
np.array([
0
,
0
,
1
,
1
,
2
,
1
])
col
=
np.array([
0
,
1
,
2
,
0
,
2
,
2
])
data
=
np.array([
1
,
4
,
5
,
8
,
9
,
6
])
sparseMatrix
=
csc_matrix((data, (row, col)),
`` shape
=
(
3
,
3
)).toarray()
print
(sparseMatrix)
Output:
[[ 1 4 0] [ 8 0 11] [ 0 0 9]]