如何从mathematica中的50X6列表中选择x,z和vx,vz列列表

时间:2017-02-08 01:07:55

标签: wolfram-mathematica

我正在加载每行包含6个元素的数据:(x,y,z,vx,vy,vz)

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

我正在尝试在x-y, y-z, x-z平面上进行所有投影,但在Take内使用时,我无法传递PartMap个参数。

这将采用组件(x,y)和(vx,vy):Map[Most, vecdata, {2}]

但我还想使用y-z

x-zMap[Take, vecdata, {2}]

2 个答案:

答案 0 :(得分:2)

你写了

Map[Most, vecdata, {2}]

这相当于以下表达式

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 :(得分:1)

有时它的代码可读性很好,可以做这样的事情:

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

或没有第一个分区步骤:

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