Re: Find position of nonzero elements
- To: mathgroup at smc.vnet.net
- Subject: [mg120370] Re: Find position of nonzero elements
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Wed, 20 Jul 2011 06:33:18 -0400 (EDT)
On 7/19/11 at 6:53 AM, dominic.woerner at mpi-hd.mpg.de (Dominic W=C3=B6rner) wrote: >How can I find the indices i and j of all nonzero elements of a >matrix. I want that because there are only some nonzero elements in >a huge matrix. I will assume your matrix is not currently a SparseArray. If so, do the following Most[ArrayRules@SparseArray@m] /. HoldPattern[a_ -> _] -> a where m is your matrix. ArrayRules applied to a SparseArray returns a list of the form {i,j}->x where i,j are the indices of a non-zero entry and x is the value of that entry. The last rule in this list will be {_,_}->0 which is default rule for elements with a zero value you aren't interested in. Finally, the replacement rule simply extracts the {i,j} portion of each rule for a non-zero entry.