# SciPy – Sparse Matrix Multiplication

Last Updated : 23 Aug, 2021

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.

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: