How do you create a sparse matrix in python?

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 generallyutilized 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 SciPygives 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.

# Usingcsr_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]]

# Usingcsc_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]]

How do you make a sparse matrix in python?

Sparse Matrices in Python A dense matrix stored in a NumPy array can be converted into a sparse matrix using the CSR representation by calling the csr_matrix() function.

How do you make a sparse matrix?

Description. S = sparse( A ) converts a full matrix into sparse form by squeezing out any zero elements. If a matrix contains many zeros, converting the matrix to sparse storage saves memory. S = sparse( m,n ) generates an m -by- n all zero sparse matrix.

How do I save a sparse matrix in python?

Save a sparse matrix to a file using . npz format. Either the file name (string) or an open file (file-like object) where the data will be saved.

How do you plot sparse data in Python?

One way to visualize sparse matrix is to use 2d plot. Python's matplotlib has a special function called Spy for visualizing sparse matrix. Spy is very similar to matplotlib's imshow, which is great for plotting a matrix or an array as an image. imshow works with dense matrix, while Spy works with sparse matrix.