matshow with sparse matrices

How can you visualize the sparsity pattern of a large sparse matrix?

The matrix is too large to fit in memory as a dense array, so I have it in csr_matrix format. When I try pylab’s matshow with it, I get the following error:

ValueError: need more than 0 values to unpack

Thoughts?

e.g.:

import pylab as pl
import scipy.sparse as sp
from random import randint

mat = sp.lil_matrix( (4000,3000), dtype='uint8' )
for i in range(1000):
    mat[randint(0,4000),randint(0,3000)] = randint(0,10)

pl.figure()
pl.matshow(mat)

Best answer

matshow works on dense arrays. For sparse arrays you can use spy:

import scipy.sparse as sps
import matplotlib.pyplot as plt

a = sps.rand(1000, 1000, density=0.001, format='csr')

plt.spy(a)
plt.show()

enter image description here