Search code examples
pythonnumpymatrixscipysparse-matrix

Scipy sparse matrix multiplication


I have this example of matrix by matrix multiplication using numpy arrays:

import numpy as np
m = np.array([[1,2,3],[4,5,6],[7,8,9]])
c = np.array([0,1,2])
m * c
array([[ 0,  2,  6],
       [ 0,  5, 12],
       [ 0,  8, 18]])

How can i do the same thing if m is scipy sparse CSR matrix? This gives dimension mismatch:

sp.sparse.csr_matrix(m)*sp.sparse.csr_matrix(c)

Solution

  • You can call the multiply method of csr_matrix to do pointwise multiplication.

    sparse.csr_matrix(m).multiply(sparse.csr_matrix(c)).todense()
    
    # matrix([[ 0,  2,  6],
    #         [ 0,  5, 12],
    #         [ 0,  8, 18]], dtype=int64)