【问题标题】:python changes format numbers ndarray many digits [duplicate]python更改格式数字ndarray许多数字[重复]
【发布时间】:2013-01-21 21:51:50
【问题描述】:

我是python的初学者,很容易被卡住和困惑......

当我读取包含带有数字的表格的文件时,它会将其读取为 numpy.ndarray

Python 正在改变数字的显示。 例如: 在输入文件中我有这个号码:56143.0254154 在输出文件中,数字写为:5.61430254e+04

但我想在输出文件中保留第一种格式。 我尝试使用 string.format 或 locale.format 函数,但它不起作用

谁能帮我做这件事?

谢谢! 鲁西

【问题讨论】:

  • 您能提供更多上下文吗?例如,您是如何写入文件的?

标签: python numpy string-formatting multidimensional-array


【解决方案1】:

如果要打印 numpy 数组,可以使用 set_printoptions 函数控制不同数据类型的格式。例如:

In [39]: a = array([56143.0254154, 1.234, 0.012345])

In [40]: print(a)
[  5.61430254e+04   1.23400000e+00   1.23450000e-02]

In [41]: set_printoptions(formatter=dict(float=lambda t: "%14.7f" % t))

In [42]: print(a)
[ 56143.0254154      1.2340000      0.0123450]

【讨论】:

    【解决方案2】:

    您必须创建一个格式化的字符串。假设变量 number 包含您要打印的数字,在 Python 2.7 或 3 中,您可以使用

    print("{:20.7f}".format(number))
    

    而在 Python 2 中:

    print "%20.7f" % number
    

    或者,如果您使用 Numpy 例程写出数组,请使用 Warren 建议的方法。

    【讨论】:

      【解决方案3】:

      试试numpy.set_printoptions()——你可以在那里,例如指定打印的位数并禁止使用科学记数法。例如,numpy.set_printoptions(precision=8,suppress=True) 将打印 8 位数字,并且没有“...e+xx”。

      【讨论】:

      • 在通过np.savetxt() 保存数组时是否有效。谢谢!
      • 经过测试,好像没有。还是需要通过np.savetxt(... ,fmt='%f')等设置格式,格式信息可以是found here
      猜你喜欢
      • 2020-02-26
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多