【问题标题】:Python float formatting: fixed total number of digitsPython浮点格式:固定总位数
【发布时间】:2013-04-14 11:10:15
【问题描述】:

我正在使用numpy.savetxt(path,array,fmt="%.2f %.2f %.2f %.2f %.2f") 保存一些数据,并且我希望文本文件的格式正确。我想将浮点数限制为一定数量的数字,如下所示:

11.2345 -> 11.2
1.2345 -> 1.23

目前我得到:

11.2345 -> 11.23
1.2345 -> 1.23

这会破坏文本文件的布局。

我知道关于 SO 有几个类似的问题,但是我无法将任何解决方案应用于 numpy.savetxt()

【问题讨论】:

    标签: python numpy floating-point fixed-width


    【解决方案1】:

    尝试使用fmt="%9.2f"。这似乎给了我很好的结果:

        25.72    433.54    135.69    898.93
       177.46    120.65    954.13    480.82
       963.45    774.35    289.08     93.64
    

    【讨论】:

    • 我已经尝试过了,但认为它不起作用。但是我刚刚注意到这是因为前面有一些长整数导致了移位。我仍然想知道是否可以确定总位数。例如,在您的情况下 Č 而不是 25.72 得到 25.720 。
    • 是的,您只需要在该点之前选择一个足够大的数字。我希望这本身不是问题?如果你想要 25.720,只需使用“%9.3f”。
    • 如果我打印 1234.567 会发生什么?它会减少到1234.5吗?澄清一下:您的解决方案纠正了格式问题。然而,由于单行总共包含超过 40 个浮点数和 5 个整数,我添加的空间越多以使格式安全,文件在 1920x1080 下越难读取。目前,使用 %5.2f,我必须滚动查看整行。 %4.2f 使一些数字加入。
    • 没有。现在,恐怕如果没有自定义代码,您所要求的就无法完成。只需选择一个足够大的 LHS,或者重新考虑您是否真的需要这些魔法宽度的文本文件......例如您可以只编写 CSV 并在 Excel 或 Calc 中打开。
    • 这是个好主意。感谢您的帮助。我认为解决方案及其在 python 中的实现是微不足道的。
    猜你喜欢
    • 2015-03-28
    • 2014-10-01
    • 2012-02-11
    • 2015-09-09
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    相关资源
    最近更新 更多