2011-08-15 11 views
1

私はMathematicaの初心者です。私の質問は:私は膨大な量x、XCORDという名前の別々のリストで座標y、zは、YCORD、ZCORDを持っていると私は1つのリストにそれらを結合したいMathematicaリストX、Y、Zのコ・オーディンの組み合わせ

例:
Xコoridinatesリスト場合ZCORD = {z1,z2,z3}によってYCORD = {y1,y2,y3}およびz座標のリストでXCORD = {x1,x2,x3}、Y座標のリストによって与えられた、私はこのようになります座標の結果のリストを持っていると思います:

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

ようこそ!私はあなたの質問を幾分編集して、あなたの絶望的な嘆願を取り除いたことに注意してください。注意や助けを得るためには、そのような発話はここでは不要です。投票ボタンを使用して好きなように投票してください。また、チェックマークボタンを使用して、あなたが最終回答として好きな回答を受け入れることを忘れないでください。あなたはそれを行う前に、より多くの回答が来るまで少し待つことをお勧めします。 –

答えて

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に記載されています。

大文字で自分自身の変数を起動しない方が良い(ただし許可されています)ことに注意してください。小文字の変数名の先頭を使用すると、すべて大文字で始まる何千もの組み込みシンボルと競合することはありません。

+0

ああ、1分遅れ:)私は私の答えを削除します。 – acl

+1

@acl私は浮気していました。 Mr.Wizardを使って、私はWatchSOユーティリティ(http://stackoverflow.com/q/6505675/615464)を実行すると思っていました。私は答えに取り組む前に質問を編集する時間さえも持っていました。 –

+0

@Sjoerd私はスピードリミットを侵害してウィズ氏の回答にフラグを立て始めました。うまくいけば、彼は彼が彼を捕まえることができれば禁止されるでしょう:) –

3

代替ソリューションMapThread機能を使用しては:大規模なリストについては

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はしかし、大きさが速いの - オドナーです:StackOverflowのFazのに

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

関連する問題