eip*_*i10 5 formatting wolfram-mathematica
这似乎应该是小菜一碟,但我没有在Mathematica的文档中找到答案.假设我有两个单独的列表,例如x = {1,2,3,4,5}和y = {1,4,9,16,25}.我想将这些列表格式化为一个表,每个列表都作为一列,如下所示:
x y
1 1
2 4
3 9
4 16
5 25
Run Code Online (Sandbox Code Playgroud)
但是,如果我做TableForm [x,y],我只得到第一列,如下所示:
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
如果我做网格[{x,y}],我得到一个表,但格式化为行而不是列,如下所示:
1 2 3 4 5
1 4 9 16 25
Run Code Online (Sandbox Code Playgroud)
现在,如果我的值为{x,y}对,而不是单独的列表,那么我几乎可以获得我想要的值,如下所示:
Input: Table[{n,n^2},{n,1,5}]//TableForm
Output:
1 1
2 4
3 9
4 16
5 25
Run Code Online (Sandbox Code Playgroud)
我差点说,因为我想在每列的顶部都有变量名称,并且我希望这些列是对齐的,这样一些数字总是垂直放置在"一个地方",十位数字在"十位"等
所以,回到我的问题:如果我有两个相同长度的单独列表,我如何将它们格式化为列表?我检查了Grid和TableForm的MMA文档,但我找不到办法.我错过了什么?如果没有直接的方法,有没有办法将两个单独的列表转换为值对,然后可以使用TableForm在列中进行格式化?
感谢您提出的任何建议.
通常在Mathematica中,您使用Transpose来切换行和列的角色.
In[6]:= x = {1,2,3,4,5}; y = {1,4,9,16,25};
In[7]:= {x,y} // Transpose // TableForm
Out[7]//TableForm= 1 1
2 4
3 9
4 16
5 25
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢Grid到TableForm.也许是这样的?
一些预赛:
x = {1, 2, 3, 4, 5};
y = {1, 4, 9, 16, 25};
grid = Transpose@{x, y};
headings = {{Item["x", Frame -> {True, True}],
Item["y", Frame -> {True, False}]}};
Run Code Online (Sandbox Code Playgroud)
以下代码,
Grid[Join[headings, grid], Alignment -> Right, Dividers -> All,
Spacings -> {3, 1}, FrameStyle -> Orange]
Run Code Online (Sandbox Code Playgroud)
将此作为输出,例如:
