3

How can I multiply the non-zero elements of a SparseArray?

Example:

a = SparseArray[{1 -> 1, 3 -> 2, 7 -> 3}]
Times @@ a (* this returns 0, but I need 6! *)
Danvil
  • 1,505
  • 1
  • 10
  • 17

1 Answers1

6

Please note the following:

  1. The sparse array a is:

     {1, 0, 2, 0, 0, 0, 3}
    

    hence applying Times to this yields zero

  2. You can see the underlying array using Normal

      a // Normal
    
  3. You could multiply the non-zero elements of a sparse array object:

     Times @@ a["NonzeroValues"]
    
ubpdqn
  • 60,617
  • 3
  • 59
  • 148
  • This is good to know! Could you perhaps point me to the documentation where "NonzeroValues" is mentioned? – Danvil Feb 06 '14 at 13:42
  • 2
    @Danvil As far as I know it isn't documented. You can see the other SparseArray Properties with: SparseArray[{1}]["Properties"]. I gathered links to some of my uses of these in this answer. – Mr.Wizard Feb 06 '14 at 14:12