Re: take square of the second and third column of a table
- To: mathgroup at smc.vnet.net
- Subject: [mg124187] Re: take square of the second and third column of a table
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Thu, 12 Jan 2012 04:18:38 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
On 1/11/12 at 5:20 PM, hanciong at gmail.com (hanciong awesome) wrote: >Hello, suppose I have a very long table like this: >1 2 3 >4 5 6 >7 8 9 >....... >2 3 4 >how can I take square of the 2nd and 3rd column? I always do it by >making a new table. so let's say the above table is A and it has 100 >lines, then I make the new table as the following: >B=Table[{A[[n]][[1]],A[[n]][[2]]^2,A[[n]][[3]]^2},{n,1,100}] >But if the length of the table is unknown, this way is impractical. >Could anyone suggests better way? thank you There are any number of ways to accomplish what you want. In[14]:= data = Partition[Range[9], 3]; Using pattern matching and a replacement rule: In[15]:= data /. {a_?NumericQ, b_, c_} -> {a, b^2, c^2} Out[15]= {{1, 4, 9}, {4, 25, 36}, {7, 64, 81}} using a pure function and Map: In[16]:= {#[[1]], #[[2]]^2, #[[3]]^2} & /@ data Out[16]= {{1, 4, 9}, {4, 25, 36}, {7, 64, 81}} assigning each column to a variable: In[17]:= {x, y, z} = Transpose[data]; Transpose[{x, y^2, z^2}] Out[17]= {{1, 4, 9}, {4, 25, 36}, {7, 64, 81}} Or using Table without knowing how long the resulting table needs to be: In[18]:= Table[{data[[1, n]], data[[2, n]]^2, data[[3, n]]^2}, {n, Length@data}] Out[18]= {{1, 16, 49}, {2, 25, 64}, {3, 36, 81}}