2017-02-08 4 views
1

1行に6つの要素を含むデータをロードしています:(x,y,z,vx,vy,vz)mathematicaの50X6リストからx、z、vx、vzの列リストを選択する方法

data = Import["http://pastebin.com/raw/6Werdnpf"]; 
vecdata = Partition[#, 3] & /@ DeleteDuplicates[data]; 

私はx-y, y-z, x-z平面上のすべての投影を取るしようとしていますが、Map以内にそれを使用しているとき、私はTakeまたはPart引数を渡すことはできません。

これは、コンポーネント(x、y)と(VX、VY)がかかります:Map[Most, vecdata, {2}]

をしかし、私はまた、あなたが

Map[Most, vecdata, {2}] 

を書いたMap[Take, vecdata, {2}]

+0

はあなたを持っている:

extractxz[{{x_, y_, z_}, {vx_, vy_, vz_}} ] := {x, z} extractxz /@ vecdata 

または最初のパーティショニング工程なし

別の言語を使用すると考えられますか?あなたがhttp://mathematica.stackexchange.com/で尋ねたいと思う以外のもの – flawr

答えて

2

使用y-zx-zを取りたいですこれは、以下の式と等価です。

Map[Part[#, {1, 2}] &, vecdata, {2}] 

Map[{#[[1]], #[[2]]} &, vecdata, {2}] 

Apply[{#1, #2} &, vecdata, {2}] 

あなたに必要な出力は次のようなことを行うために、コードの読みやすさのために、時には

xy = Map[Most, vecdata, {2}] 

yz = Map[Rest, vecdata, {2}] 

xz = Apply[{#1, #3} &, vecdata, {2}] 
1

その良いで達成することができます:

extractxz[{x_, y_, z_, vx_, vy_, vz_} ] := {x, z} 
extractxz /@ data 
関連する問題