Re: incrementing elements of a SparseArray
- To: mathgroup at smc.vnet.net
- Subject: [mg123717] Re: incrementing elements of a SparseArray
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Fri, 16 Dec 2011 05:50:44 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201112150955.EAA22977@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
Initialization: Clear[m] m[i_,j_]=0; Setting a non-zero element: m[10,5] = Pi Retrieval in matrix form: Array[m, {10, 10}] {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, \[Pi], 0, 0, 0, 0, 0}} Bobby On Thu, 15 Dec 2011 03:55:37 -0600, Matt Enlow <mattenlow at gmail.com> wrote: > Hi, > > I am creating a very large 2-dimensional SparseArray ("M") by starting > with > an empty one (all zeros) and iterating a tight loop, which increments a > different element of M each time. In the end result, M will still be > mostly > zeros, but some entries will be anywhere from 1 to about 50. I have a way > to do it, but I feel as though there is probably a better way. > > Originally I thought I could use MapAt, but when I use it on a > SparseArray, > it returns a "Normal" array, which I don't want to keep having to convert > back to a SparseArray every time. My "fix" was to create a new > SparseArray > that only has a 1 in the position I want to increment (zeros everywhere > else), then add it to M. Again, this works, but feels inefficient. Is > there > a simpler and/or more efficient way to do this? > > Thanks in advance, > > Matt Enlow -- DrMajorBob at yahoo.com
- References:
- incrementing elements of a SparseArray
- From: Matt Enlow <mattenlow@gmail.com>
- incrementing elements of a SparseArray