RE: proper way to manipulate lists?
- To: mathgroup at smc.vnet.net
- Subject: [mg40197] RE: [mg40182] proper way to manipulate lists?
- From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
- Date: Tue, 25 Mar 2003 14:49:07 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
>-----Original Message----- >From: Nathan Moore [mailto:nmoore at physics.umn.edu] To: mathgroup at smc.vnet.net >Sent: Tuesday, March 25, 2003 9:04 AM >To: mathgroup at smc.vnet.net >Subject: [mg40197] [mg40182] proper way to manipulate lists? > > > >I'm sure this is a one-liner, but it has stumped me for years. Suppose >I'm working with a 2-d array of data, > data = {{x1,y1},{x2,y2}...{xN,yN}}; >and I want to transform the data according to, > data2 = {{x1*a,y1*b},{x2*a,y2*b}...{xN*a,yN*b}}; >The only way I know to do this is to move the data to excel, >performing the transform and then move the data back to >Mathematica. This >is crazy - there must be a better way - is there? Please tell me there >is! > >regards, > >Nathan Moore, University of Minnesota Physics Department > > Nathan, several possibilities, some given here (1) {a, b}*# & /@ data (2) Table[{a, b}, {Length[data]}]*data (3) Thread[Unevaluated[{a, b}*#], List, -1] &[data] (4) Transpose[{a, b}*Transpose[data]] Number (1) perhaps comes to mind as first, simple idea (and of course is quite ok); (2) appears to be doubtful at first sight, yet performs better than (1) on non-packed data. I would have bet on (3) but (4) performs even better. For packed data (3) is roughly off, (1) comes slightly better than (4), clearly best now is (2). -- Hartmut Wolf