*To*: mathgroup@smc.vnet.net*Subject*: [mg10777] RE: [mg10720] Plotting Data*From*: Ersek_Ted%PAX1A@mr.nawcad.navy.mil*Date*: Thu, 5 Feb 1998 00:58:24 -0500

In the lines below I compare the timing of solutions from Alan Hayes, Sean Ross, and a few I came up with. They all have the same result when you get rid of "//Timing//First". My favorite is: data/.{x_,y_}->{x,f[y]} That's because it's very readable, easy to write, and the timing is not too sloggish. In Dave Wagner's excellent book "Power Programming with Mathematica: the Kernal", he tells us it's inefficient to tear apart a list and put it back together with a similar structure. That explains why the worst performer is: Table[{data[[n,1]],f[data[[n,2]]]},{n,1,Length[data]}] Ted Ersek ---------- |From: "seanross"@worldnet.att.net@PMDF@PAXMB1 To: mathgroup@smc.vnet.net |To: ersek ted; "mathgroup"@smc.vnet.net@PMDF@PAXMB1 |Subject: [mg10777] [mg10720] Re: [mg10716] Plotting Data |Date: Monday, February 02, 1998 5:55AM | |<<File Attachment: 00000000.TXT>> |Larry C Linik wrote: |> |> I'm plotting data from a table (x,y] and I want to apply a function to |> the y values to plot (x,f[y]]. How can I do this? |> |> Thanks, |> Larry | | |Assuming a table of data called data, then generate a new table using | |Table[{data[[n,1]],f[data[[n,2]]},{n,start, end}] -- |Remove the _nospam_ in the return address to respond. | In[1]:= data=Table[{Random[],Random[]},{10^5}]; In[2]:= Table[{data[[n,1]],f[data[[n,2]]]},{n,1,Length[data]}] //Timing//First Out[2]= 26.31 Second In[3]:= Map[MapAt[foo,#,2]&,data]//Timing//First Out[3]= 14.88 Second In[4]:= Apply[{#,f[#2]}&, data,1]//Timing//First Out[4]= 11.42 Second In[5]:= data/.{x_,y_}->{x,f[y]}//Timing//First Out[5]= 9.39 Second In[6]:= Transpose[MapAt[foo/@#&,Transpose[data],2]]//Timing//First Out[6]= 6.04 Second In[7]:= Thread[MapAt[foo/@#&,Thread[data],2]]//Timing//First Out[7]= 5.94 Second Question: Thread is a generalization of Transpose. Right? Is Thread always faster than Transpose? If it is why should we ever use Transpose?