制表:为每一列定义 floatfmt

tabulate: define floatfmt for each column

我正在使用 tabulate 0.75 生成 LaTeX 表格。 生成我的表格的函数 tabulate 有一个内置函数来格式化输入。 但我想为每一列本身定义小数位数。例如

a      b
18.12  16
17.47  15

这是完美运行的内置函数 (floatfmt=".2f") - 但它对每一列的作用相同。

tabulate(tables[i], headers[i], numalign="center", tablefmt="latex_booktabs", floatfmt=".2f")

我正在通过

获取我的数据
tables = [(list(zip(
                unumpy.nominal_values(dt),
                unumpy.nominal_values(U),
                unumpy.nominal_values(I),
                unumpy.nominal_values(E),
                unumpy.std_devs(E)))), ............and so on

我正在为我的列表使用 ufloat

array123 = ufloat(nominalvalues, errors)

非常频繁,因为它使处理错误变得非常容易。有谁知道一种简单的格式化方法?

"{:.2f}".format(unumpy.nominal_values(E))
TypeError: non-empty format string passed to object.__format__

这行不通。

提前致谢。

来自documentation

floatfmt argument can be a list or a tuple of format strings, one per column, in which case every column may have different number formatting::

>>> print tabulate([[0.12345, 0.12345, 0.12345]], floatfmt=(".1f", ".3f"))
--- ----- -------
0.1 0.123 0.12345
--- ----- -------

这应该会使您的代码更整洁一些。