我正在加载每行包含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
内使用时,我无法传递Part
或Map
个参数。
这将采用组件(x,y)和(vx,vy):Map[Most, vecdata, {2}]
但我还想使用y-z
x-z
,Map[Take, vecdata, {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