Python 使用 tabulate 打印列表

Ric*_*all 3 python arrays list

我正在尝试打印天文学模拟的输出,以便它在我的控制台中看起来不错。我生成了 4 个 numpy 数组,分别称为振幅、质量、周期和偏心率,我想将它们放在一个表中。每个数组的第一个索引是行星 1 的值,第二个索引是行星 2 的值,依此类推。

所以我的数组看起来像(值都是浮点数,例如“a1”只是一个占位符):

amp = [a1 a2 a3 a4]
mass = [m1 m2 m3 m4]
period = [p1 p2 p3 p4]
ecc = [e1 e2 e3 e4]
Run Code Online (Sandbox Code Playgroud)

我希望我的桌子看起来像:

planet|amp|mass|period|ecc
1     |a1 |m1  |p1    |e1
2     |a2 |m2  |p2    |e2
...
Run Code Online (Sandbox Code Playgroud)

我尝试过使用 tabulate 和类似的东西:

print tabulate(['1', amp[0], mass[0], period[0], ecc[0]], headers=[...])
Run Code Online (Sandbox Code Playgroud)

但我收到“numpy.float64”对象不可迭代的错误

任何帮助,将不胜感激!

Lir*_*aro 6

您可以将zip()tabulate结合使用来创建一个更漂亮的表格:

from tabulate import tabulate
headers = ['planet', 'amp', 'mass', 'period', 'ecc']    

amp = [1.1, 1.2, 1.3, 1.4]
mass = [2.1, 2.2, 2.3, 2.4]
period = [3.1, 3.2, 3.3, 3.4]
ecc = [4.1, 4.2, 4.3, 4.4]
planet = range(1, len(amp)+1)

table = zip(planet, amp, mass, period, ecc)
print(tabulate(table, headers=headers, floatfmt=".4f"))
Run Code Online (Sandbox Code Playgroud)

输出:

  planet     amp    mass    period     ecc
--------  ------  ------  --------  ------
       1  1.1000  2.1000    3.1000  4.1000
       2  1.2000  2.2000    3.2000  4.2000
       3  1.3000  2.3000    3.3000  4.3000
       4  1.4000  2.4000    3.4000  4.4000
Run Code Online (Sandbox Code Playgroud)

  • 如此简单的实现!多谢,伙计 (2认同)