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.
# 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.
# 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.
# 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: