Finding Nonzero Elements in a Sparse Matrix

Nick Vatamaniuc vatamane at gmail.com
Wed Nov 8 01:43:38 EST 2006


de Lenn,

Sorry I assumed the nonzero would work for sparse matrices as well.

BUT! --  If the sparse matrix used is the default scipy's
sparse.lil_matrix,  you just need to print out the representation
because the lil_matrix is implemented as a _sequence of non-zero
elements_  i.e. just what you need.

In other words it is kind of silly to provide a nonzero for lil_matrix
because it has _only_ non-zero elements.

Well, here is the example:
------------------------------------
>>> from scipy import *
>>> A=sparse.lil_matrix((3,3))
>>> A[1,2]=10
>>> A[2,0]=-10
>>> print A
  (1, 2)        10
  (2, 0)        -10
>>>
------------------------------------

The only way it could be helpful is if you get a lil_matrix returned as
an object from some code and you need to list all the elements...

Hope this helps,
Nick Vatamaniuc


deLenn wrote:
> Thanks for the reply.
>
> 'nonzero' deos not seem to work with sparse matrices. here is an
> example:
>
>
> from scipy import *
> A = sparse.lil_matrix((3,3))
> A[1,2] = 10
> A[2,0] = -10
>
> nonzero(A)
> >>> ()
>
>
> (I tried it with an ordinary matrix, and it works fine)
>
> Cheers.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Nick Vatamaniuc wrote:
> > The function you might want is nonzero() or flatnonzero()
> >
> > >>> from numpy import *
> >
> > >>> a=array([ [1,2],[0,4] ])
> >
> > >>> a
> > array([[1, 2],
> >            [0, 4]])
> >
> > >>> flatnonzero(a)
> > array([0, 1, 3])
> >
> > nonzero() will return the a sequence of index arrays of non zero
> > elements
> > flatnonzero()  returns the non-zero elements of the flattened version
> > of the array.
> >
> > Cheers,
> > Nick Vatamaniuc
> >
> >
> >
> > deLenn wrote:
> > > Hi,
> > >
> > > Does scipy have an equivalent to Matlab's 'find' function, to list the
> > > indices of all nonzero elements in a sparse matrix?
> > > 
> > > Cheers.




More information about the Python-list mailing list