Re: Combining Lists
- To: mathgroup at smc.vnet.net
- Subject: [mg16755] Re: [mg16722] Combining Lists
- From: "Wolf, Hartmut" <hwolf at debis.com>
- Date: Wed, 24 Mar 1999 02:24:00 -0500
- Organization: debis Systemhaus
- References: <199903230333.WAA07333@smc.vnet.net.>
- Sender: owner-wri-mathgroup at wolfram.com
Dear John
JOHN C ERB schrieb:
>
> I have a set of x & y data points in one list;
>
> xydata={{x1,y1},{x2,y2},{x3,y3},{x4,y4}};
>
> and a corresponding set of z data points in another list:
>
> zdata={z1,z2,z3,z4};
>
> I wish to combine them into one list of {x,y,z} data points,
> which I can do by:
>
> {temp1,temp2}=Transpose[xydata];
> xyzdata=Transpose[{temp1,temp2,zdata}]
>
> which gives the desired result:
>
> {{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},{x4,y4,z4}}
>
> QUESTION: Is there a more efficient way of doing this?
>
Most probably not!
This *is* a very efficient method to do this. Look at the timing:
In[1]:= xyData=Array[{x[#],x[#]}&,50000];//Timing
Out[1]= {3.215 Second,Null}
In[2]:= zData=Array[z,50000];//Timing
Out[2]= {1.142 Second,Null}
In[3]:= rData=Transpose[Append[Transpose[xyData],zData]];//Timing
Out[3]= {1.161 Second,Null}
^^^^^^^^^^^^
I only found one close contender:
In[4]:= sData=MapThread[Append,{xyData, zData}];//Timing
Out[4]= {1.762 Second,Null}
^^^^^^^^^^^^
finally look at:
In[5]:= rData[[44444]]
Out[5]= {x[44444],x[44444],z[44444]}
In[6]:= sData[[44444]]
Out[6]= {x[44444],x[44444],z[44444]}
so both did it easily for 50000 Elements!
Regards, Hartmut
- References:
- Combining Lists
- From: "JOHN C ERB" <JOHN_C_ERB@prodigy.net>
- Combining Lists