30

将 numpy.float64 打印和转换为字符串的正确/可接受的方法是什么?我注意到只是使用printstr()会失去一些精度。但是,repr保持完整的精度。例如:

>>> import numpy
>>> print numpy.float64('6374.345407799015')
6374.3454078
>>> print repr(numpy.float64('6374.345407799015'))
6374.3454077990154
  1. 我假设只是调用 print 变成调用str()float64 对象。那么__str__()对于 numpy.float64 是否使用类似的东西实现'%s' % (float(self))或以某种方式使用 Python 的内置函数强制转换 float64 float()?我试图快速查看 numpy 的源代码,但并不是很明显发生了什么。

  2. 我一直认为repr()应该返回可用于eval()重新创建对象的有效 Python 代码。这是公认的约定吗?幸运的是,在这种情况下,numpy 不遵循这个约定,因为repr()只返回原始数字作为字符串而不是类似"numpy.float64('6374.345407799015')".

所以,这一切都让我感到困惑。将 numpy.float64 转换为字符串和/或打印它同时保证您始终具有相同的完整精度的正确方法是什么?

4

2 回答 2

11

astype方法效果很好:

>>> numpy.float64('6374.345407799015').astype(str)
'6374.345407799015'
于 2017-06-13T13:35:04.340 回答
8

查看numpy.set_printoptions。具体来说,

numpy.set_printoptions(precision=15)
于 2012-10-18T14:00:57.953 回答