2011-08-15 18 views
1

我是Mathematica的初學者。我的問題是:我有x的數額特別巨大,y和z座標中單獨列出了一個名爲XCORD,YCORD,ZCORD,我想他們在一個列表結合Mathematica列表結合X,Y,Z聯合編號

例:
如果X共同oridinates列表由XCORD = {x1,x2,x3}給出,由YCORD = {y1,y2,y3}的y座標列表,並通過ZCORD = {z1,z2,z3}的Z座標列表,我想有一個看起來像這樣的座標的結果列表:

{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3}} 
+2

歡迎StackOverflow的FAZ!請注意,我在某種程度上編輯了您的問題並刪除了您絕望的請求。這種話語在這裏是不必要的關注和幫助。請使用投票按鈕投票選出您喜歡的答案,並且不要忘記使用複選標記按鈕接受您最喜歡的答案作爲最終答案。在做這件事之前,您可能想稍微等待更多的答案。 –

回答

6

你可以做這與Transpose

XCORD = {x1, x2, x3}; 
YCORD = {y1, y2, y3}; 
ZCORD = {z1, z2, z3}; 

res = Transpose[{XCORD, YCORD, ZCORD}] 

==> {{x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3}} 

有關使用列表的更多信息,請參閱here,更具體到您的問題,here

請注意,它是更好的(儘管它是允許的),不要用大寫字母來啓動你自己的任何變量。使用變量名的小寫字母開頭意味着您將永遠不會與成千上萬個內置符號衝突,這些符號都以大寫字母開頭。使用MapThread功能

+0

啊,遲到一分鐘:)我會刪除我的答案,然後... – acl

+1

@acl我是作弊。隨着Mr.Wizard回來,我想我可能會運行我的WatchSO實用程序(http://stackoverflow.com/q/6505675/615464),它有幫助。在做出答案之前,我甚至有時間編輯這個問題。 –

+0

@Sjoerd我開始貶低Wiz先生回答侵犯速度限制的答案。希望他會被禁止,如果他們能趕上他:) –

3

替代的解決方案:

In[2]:= MapThread[List, {{x1, x2, x3}, {y1, y2, y3}, {z1, z2, z3}}] 

Out[2]= {{x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3}} 

對於大名單,Transpose是的幅度更快的ordner,雖然:

In[3]:= With[{n=10^6}, x=RandomReal[1, n]; y=RandomReal[2, n]; z=RandomReal[3, n];] 

In[4]:= Transpose[{x, y, z}]; // Timing 

Out[4]= {0.644832, Null} 

In[5]:= MapThread[List, {x, y, z}]; // Timing 

Out[5]= {5.87969, Null} 
+0

我肯定會鼓勵人們更熟悉'MapThread',它通常非常有用。另一方面,在這種情況下速度更快:'Transpose'還是'MapThread'? – rcollyer

+0

@rcollyer查看更新回答 – sakra

+0

謝謝。我很欣賞這些時機,特別是當有競爭的選擇時,但我有點兒滑稽。 – rcollyer

相關問題