How to Create a Sparse Matrix in Python

• 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

 # Python program to create# sparse matrix using csr_matrix()  # Import required packageimport numpy as npfrom scipy.sparse import csr_matrix  # Creating a 3 * 4 sparse matrixsparseMatrix = csr_matrix((3, 4),                           dtype = np.int8).toarray()  # Print the sparse matrixprint(sparseMatrix)

Output:

[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]

Example 2:

Python

 # Python program to create# sparse matrix using csr_matrix()  # Import required packageimport numpy as npfrom scipy.sparse import csr_matrix  row = np.array([0, 0, 1, 1, 2, 1])col = np.array([0, 1, 2, 0, 2, 2])  # taking datadata = np.array([1, 4, 5, 8, 9, 6])  # creating sparse matrixsparseMatrix = csr_matrix((data, (row, col)),                           shape = (3, 3)).toarray()  # print the sparse matrixprint(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

 # Python program to create# sparse matrix using csc_matrix()  # Import required packageimport numpy as npfrom scipy.sparse import csc_matrix  # Creating a 3 * 4 sparse matrixsparseMatrix = csc_matrix((3, 4),                           dtype = np.int8).toarray()  # Print the sparse matrixprint(sparseMatrix)

Output:

[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]

Example 2:

Python

 # Python program to create# sparse matrix using csc_matrix()  # Import required packageimport numpy as npfrom scipy.sparse import csc_matrix  row = np.array([0, 0, 1, 1, 2, 1])col = np.array([0, 1, 2, 0, 2, 2])  # taking datadata = np.array([1, 4, 5, 8, 9, 6])  # creating sparse matrixsparseMatrix = csc_matrix((data, (row, col)),                          shape = (3, 3)).toarray()  # print the sparse matrixprint(sparseMatrix)

Output:

[[ 1  4  0]
[ 8  0 11]
[ 0  0  9]]

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

My Personal Notes arrow_drop_up