【问题标题】:set ipython's default scientific notation threshold设置 ipython 的默认科学记数法阈值
【发布时间】:2013-05-27 20:01:29
【问题描述】:

如何修改 python 决定以科学计数法打印的点?

例如我希望所有> 1e4< 1e-4 都以科学计数法打印。

好:

In [11]: 5e20
Out[11]: 5e+20

不好:

In [12]: 5e10
Out[12]: 50000000000.0

【问题讨论】:

    标签: python printing formatting ipython output


    【解决方案1】:

    在 IPython 中你可以使用

    %precision %.4g
    

    这将打印绝对值在科学计数法中 = 1e4 的浮点值。

    您可以在IPython API Docs 中找到有关%precision 命令的更多信息。 对于字符串格式选项,请查看Python Docs

    【讨论】:

    • 太棒了,谢谢! (注意:我认为那里不应该有引号)。有没有办法让它成为默认行为(或者每次我运行 ipython 时都加载它)?
    • 在 IPython 的配置文件中添加(或编辑)c.InteractiveShellApp.exec_lines = ['%precision %.4g'] 行。要找到该文件,请使用ipython locate。就我而言,它位于~/.ipython/profile_default/ipython_config.py 之下(请参阅IPython Doc)。感谢您指出引用,我将删除它们:-)。
    • 此解决方案似乎不再有效(IPython 2.2.0 / RHEL7 / Python 2.7.5)。它会继续为不符合我要求的阈值的值打印科学计数法。
    • 我刚刚用 Python 2.7.9 和 IPython 2.4.0 试了一下,它仍然对我有用。
    【解决方案2】:

    实际上它与 IPython 无关,因为它只是调用__str__。可悲的是,float 作为内置类型,是用 C 实现的,您不能对 C 类型进行猴子补丁。因此,您唯一的选择是修改 cpython 中的 __str__ 实现或修补 IPython 使其比调用 __str__ 更智能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多