Re: How to quickly find number of non-zero elements in sparse matrix rows?

• To: mathgroup at smc.vnet.net
• Subject: [mg56847] Re: How to quickly find number of non-zero elements in sparse matrix rows?
• From: Paul Abbott <paul at physics.uwa.edu.au>
• Date: Sat, 7 May 2005 15:35:08 -0400 (EDT)
• Organization: The University of Western Australia
• Sender: owner-wri-mathgroup at wolfram.com

```Paul Abbott wrote:

> The 4-th part of the data structure records the cumulative sum of
> non-zero entries. However, there seems to be no simple way to access
> this information. Usually, for special formats you can use Part to
> extract such information but Part is interpreted by SparseArray,
> circumventing this.

Of course one can use pattern-matching! For a sparse array,

sa=SparseArray[{i_,i_} -> 1,{10,10}]

extract the cumulative sum of non-zero entries,

sa /. SparseArray[_, _, _, x_] :> x[[2,1]]

and use ListConvolve to give the number of non-zero entries in each row.

ListConvolve[{1, -1}, %]

I think that this is about as fast as you can hope for.

Cheers,
Paul

--
Paul Abbott                                      Phone: +61 8 6488 2734
School of Physics, M013                            Fax: +61 8 6488 1014
The University of Western Australia         (CRICOS Provider No 00126G)
AUSTRALIA                               http://physics.uwa.edu.au/~paul
http://InternationalMathematicaSymposium.org/IMS2005/

```

• Prev by Date: Re: Boundary conditions in NDSolve
• Next by Date: Re: Problem with substitutions in SparseArray?
• Previous by thread: Re: How to quickly find number of non-zero elements in sparse matrix rows?
• Next by thread: Re: How to quickly find number of non-zero elements in sparse matrix rows?