Mathematica:如何将x坐标的嵌套列表和y坐标的嵌套列表制作为(x,y)坐标的嵌套列表?

问题描述 投票:0回答:1

我有两个嵌套列表:一个带有一组“ a到d”嵌套的x坐标,一个带有一组“ a到d”嵌套y坐标。

    xlist={{xa1,xa2,xa3,xa4},{xb1,xb2,xb3,xb4},{xc1,xc2,xc3,xc4}}
    ylist={{ya1,ya2,ya3,ya4},{yb1,yb2,yb3,yb4},{yc1,yc2,yc3,yc4}}

如何以以下格式制作嵌套的坐标列表?final = {{{{xa1,ya1},{xa2,ya2},{xa3,ya3},{xa4,ya4}},{{xb1,yb1},{xb2,yb2},{xb3,yb3},{xb4 ,yb4}},{{xc1,yc1},{xc2,yc2},{xc3,yc3},{xc4,yc4}},{{xd1,yd1},{xd2,yd2},{xd3,yd3}, {xd4,yd4}}}

我已经成功地使用以下内容仅在第一个元素上完成了我想要的,但是我是Mathematica的新手,不知道如何创建一个对所有元素都执行此操作的列表。

Transpose[{xlist[[1]], ylist[[1]]}]

非常感谢您的帮助!

nested coordinates wolfram-mathematica transpose nested-lists
1个回答
0
投票

xlist={{xa1,xa2,xa3,xa4},{xb1,xb2,xb3,xb4},{xc1,xc2,xc3,xc4}};
ylist={{ya1,ya2,ya3,ya4},{yb1,yb2,yb3,yb4},{yc1,yc2,yc3,yc4}};
h[p_,q_]:=Transpose[{p,q}];
final=MapThread[h,{xlist,ylist}]

立即返回

{{{xa1,ya1},{xa2,ya2},{xa3,ya3},{xa4,ya4}},
 {{xb1,yb1},{xb2,yb2},{xb3,yb3},{xb4,yb4}}, 
 {{xc1,yc1},{xc2,yc2},{xc3,yc3},{xc4,yc4}}}

除了您不知道您的位置,它与您所需的输出完全匹配

 {{xd1,yd1},{xd2,yd2},{xd3,yd3},{xd4,yd4}}

应该来自您的输入。我认为那是一个错字。

与Mathematica一样,几乎肯定还有其他方法。选择一个您可以记住并使用而不会犯太多错误的工具。

您可以执行的另一种方法是

final=MapThread[Transpose[{#1,#2}]&,{xlist,ylist}]

产生完全相同的结果

您可以执行的另一种方法是

final=Table[Transpose[{xlist[[i]],ylist[[i]]}],{i,1,3}]

产生完全相同的结果

您可以执行的另一种方法是

final=Partition[Transpose[{Flatten[xlist],Flatten[ylist]}],4]

产生完全相同的结果

必须有比这更多的方法

仔细检查每一项,以确保我没有犯错

© www.soinside.com 2019 - 2024. All rights reserved.