Re: Sparse Array Question
- To: mathgroup at smc.vnet.net
- Subject: [mg130580] Re: Sparse Array Question
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Wed, 24 Apr 2013 07:00:34 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20130423040424.702866B1B@smc.vnet.net>
myList = {{1, 1} -> 1, {2, 1} -> 2, {1, 1} -> 3, {2, 2} -> 1, {1, 1} -> 1}; myList //. {s___, a_ -> b_, m___, a_ -> c_, e___} -> {s, a -> (b + c), m, e} {{1, 1} -> 5, {2, 1} -> 2, {2, 2} -> 1} For v3 or later (Split was new in v3) #[[1, 1]] -> Plus @@ #[[All, -1]] & /@ Split[Sort[myList], #1[[1]] == #2[[1]] &] {{1, 1} -> 5, {2, 1} -> 2, {2, 2} -> 1} For v5 or later (Total was new in v5) #[[1, 1]] -> Total[#[[All, -1]]] & /@ Split[Sort[myList], #1[[1]] == #2[[1]] &] {{1, 1} -> 5, {2, 1} -> 2, {2, 2} -> 1} For v7 or later (GatherBy was new in v7) #[[1, 1]] -> Total[#[[All, -1]]] & /@ GatherBy[myList, First] {{1, 1} -> 5, {2, 1} -> 2, {2, 2} -> 1} Bob Hanlon On Tue, Apr 23, 2013 at 12:04 AM, christopher arthur < chris.arthur1 at gmail.com> wrote: > Hello, > > I have a list of rules for defining a SparseArray. The list has some > coordinates repeated with different values. If a coordinate appears in > the list more than once, I want to sum up the values, and then have a > SparseArray > > i.e., if my list were myList={{1,1}->1,{2,1}->2,{1,1}->3} then my > SparseArray should have {1,1}->4. I've tried using ReplacePart on an > array to say myArray=ReplacePart[myArray,...] but this seems horribly > inefficient as a way to change values in an array. > > I'm using Mathematica 5.2 > > Cheers, > > Chris > >
- References:
- Sparse Array Question
- From: christopher arthur <chris.arthur1@gmail.com>
- Sparse Array Question