Re: MapThread over ragged arrays
- To: mathgroup at smc.vnet.net
- Subject: [mg83674] Re: MapThread over ragged arrays
- From: Vince Virgilio <blueschi at gmail.com>
- Date: Wed, 28 Nov 2007 05:28:22 -0500 (EST)
- References: <fhrrbf$583$1@smc.vnet.net>
On Nov 19, 6:17 am, Ravi Balasubramanian <br... at cs.washington.edu> wrote: > Hello people, > > I have two matrices that are ragged. > > mat1 = {{1, 2}, {2, 3, 4}, {5, 6}} > mat2 = {{a, b}, {b, c, d}, {e, f}} > > I have to Map a function f at level 2. So that I have > > { > {f[1,a],f[2,b]}, > {f[2,b], f[3,c], f[4,d]}, > {f[5,e],f[6,f]}, > > } > > MapThread seems to thread only over full arrays, and so I cannot thread > over level {2}. I know I can I do this using two MapThreads (each at > level 1), but that seems unnecessary. Thread seems to apply the head to > each value, and if the head does not match, the value is repeated (which > might not be necessary). Seems like a simple thing to do. Any ideas? > > Ravi > Univ. of Washington > Seattle, WA Ravi, I've worked around this design of MapThread with Join, Map, then Thread. First Join mat1 and mat2 at level 2. Then Map an augmented f over the result. Let the new f first split/partition its list argument into two equal halves (1st and 2nd half, using Partition[#, Length[arg]/2]&), and thread its old self over the result. If time permits, I'll post code later; it looks quite clean. Vince Virgilio