Re: Newbie question
- To: mathgroup at smc.vnet.net
- Subject: [mg25305] Re: Newbie question
- From: Laurent CHUSSEAU <chusseau at univ-montp2.fr>
- Date: Tue, 19 Sep 2000 03:45:30 -0400 (EDT)
- References: <8q3dvc$kbb@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
dans l'article 8q3dvc$kbb at smc.vnet.net, Jose M Lasso à jml at accessinter.net a
écrit le 17/09/2000 23:44 :
> Hi Mathgroup,
>
> I have some numerical data: data:={{x,y},{x1,y1},{x2,y2}....{xn,yn}},
> I want to transform the data like this:
> data1:={{x,1/y},{x1,1/y1},{x2,1/y2}....{xn,1/yn}}, how can I do this
> transformation? Thanx in advance. Regards
>
> Jose M Lasso
>
Let me extend my previous answer by CPU time considerations. The solution I
proposed works well but you can also do that more efficeintly with the
function Transpose.
Here is my previous solution
In[2]:=
Timing[aa=Table[{i,i},{i,500000}];]
Out[2]=
{3.36667 Second,Null}
In[19]:=
Timing[{#\[LeftDoubleBracket]1\[RightDoubleBracket],
1/#\[LeftDoubleBracket]2\[RightDoubleBracket]}&/@aa;]
Out[19]=
{15.3833 Second,Null}
Here is another by defining a pure function process that uses Transpose
In[15]:=
process=Transpose[{Transpose[#]\[LeftDoubleBracket]1\[RightDoubleBracket],
1/Transpose[#]\[LeftDoubleBracket]2\[RightDoubleBracket]}]&
Out[15]=
\!\(Transpose[{\(Transpose[#1]\)\[LeftDoubleBracket]1\[RightDoubleBracket],
1\/\(Transpose[#1]\)\[LeftDoubleBracket]2\[RightDoubleBracket]}]&\)
In[17]:=
Timing[process[aa];]
Out[17]=
{8.21667 Second,Null}
... with large data you can gain a factor of 2 in time.
--
Laurent CHUSSEAU, CR CNRS, CEM2 UMR5507, Universite de Montpellier II