Open In App

SciPy – Sparse Matrix Multiplication

Last Updated : 23 Aug, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Sparse matrices are those matrices that have the most of their elements as zeroes. scipy.sparse is SciPy 2-D sparse matrix package for numeric data. It provides us different classes to create sparse matrices. csc_matrix and csr_matrix are the two such classes. csc_matrix() is used to create a compressed sparse column matrix whereas csr_matrix() is used to create a compressed sparse row matrix.

Note: For more information about how to create a sparse matrix please visit How to Create a Sparse Matrix in Python

We use the multiply() method provided in both csc_matrix and csr_matrix classes to multiply two sparse matrices.  We can multiply two matrices of same format( both matrices are csc or csr format) and also of different formats ( one matrix is csc and other is csr format).

Example 1: Multiply two csc matrices

We create two sparse matrices of compressed sparse column format using csc_matrix() and multiply them using multiply() method.

Python3




# Python program to multpliply two 
# csc matrices using multiply()
  
# Import required libraries
import numpy as np
from scipy.sparse import csc_matrix
  
# Create first csc matrix A
row_A = np.array([0, 0, 1, 2 ])
col_A = np.array([0, 1, 0, 1])
data_A = np.array([4, 3, 8, 9])
  
cscMatrix_A = csc_matrix((data_A, 
                          (row_A, col_A)),
                        shape = (3, 3))
  
# print first csc matrix
print("first csc matrix: \n"
      cscMatrix_A.toarray())
  
# Create second csc matrix B
row_B = np.array([0, 1, 1, 2 ])
col_B = np.array([0, 0, 1, 0])
data_B = np.array([7, 2, 5, 1])
  
cscMatrix_B = csc_matrix((data_B, (row_B, col_B)),
                        shape = (3, 3))
  
# print second csc matrix
print("second csc matrix:\n", cscMatrix_B.toarray())
  
# Multiply these matrices
sparseMatrix_AB = cscMatrix_A.multiply(cscMatrix_B)
  
# print resultant matrix
print("Product Sparse Matrix:\n",
      sparseMatrix_AB.toarray())


Output:

Example 2. Multiply two csr matrices

We create two sparse matrices of compressed sparse row format using csr_matrix() and multiply them using multiply() method.

Python3




# Python program to multpliply two 
# csr matrices using multiply()
  
# Import required libraries
import numpy as np
from scipy.sparse import csr_matrix
  
# Create first csr matrix A
row_A = np.array([0, 0, 1, 2 ])
col_A = np.array([0, 1, 0, 1])
data_A = np.array([4, 3, 8, 9])
  
csrMatrix_A = csr_matrix((data_A, (row_A, col_A)),
                        shape = (3, 3))
  
# print first csr matrix
print("first csr matrix: \n", csrMatrix_A.toarray())
  
# Create second csr matrix B
row_B = np.array([0, 1, 1, 2 ])
col_B = np.array([0, 0, 1, 0])
data_B = np.array([7, 2, 5, 1])
  
csrMatrix_B = csr_matrix((data_B, (row_B, col_B)),
                        shape = (3, 3))
  
# print second scr matrix
print("second csr matrix:\n", csrMatrix_B.toarray())
  
# Multiply these matrices
sparseMatrix_AB = csrMatrix_A.multiply(csrMatrix_B)
  
# print resultant matrix
print("Product Sparse Matrix:\n",sparseMatrix_AB.toarray() )


 Output:

Example 3. Multiply csc and csr matrices

We create two sparse matrices, one of compressed sparse column format and other of compressed sparse row format. Multiply them using multiply() method.

Python3




# Python program to multpliply  
# csc and csr matrices using multiply()
  
# Import required libraries
import numpy as np
from scipy.sparse import csc_matrix
  
# Create csc matrix
row_A = np.array([0, 0, 1, 2 ])
col_A = np.array([0, 1, 0, 1])
data_A = np.array([4, 3, 8, 9])
  
cscMatrix = csc_matrix((data_A, (row_A, col_A)),
                        shape = (3, 3))
  
# print  csc matrix
print("csc matrix: \n", cscMatrix.toarray())
  
# Create csr matrix 
row_B = np.array([0, 1, 1, 2 ])
col_B = np.array([0, 0, 1, 0])
data_B = np.array([7, 2, 5, 1])
  
csrMatrix_B = csc_matrix((data_B, (row_B, col_B)),
                        shape = (3, 3))
  
# print csr matrix
print("csr matrix:\n", csrMatrix_B.toarray())
  
# Multiply csc matrix with csr matrix
sparseMatrix = cscMatrix_A.multiply(csrMatrix_B)
  
# print resultant matrix
print("Product csc with csr Matrix:\n",
      sparseMatrix.toarray() )
  
# Multiply csr matrix with csc matrix
sparseMatrix = csrMatrix_A.multiply(cscMatrix_B)
  
# print resultant matrix
print("Product csr with csc Matrix:\n",
      sparseMatrix.toarray() )


Output:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads