完全打印numpy.float64

dur*_*2.0 25 python numpy

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

>>> import numpy
>>> print numpy.float64('6374.345407799015')
6374.3454078
>>> print repr(numpy.float64('6374.345407799015'))
6374.3454077990154
Run Code Online (Sandbox Code Playgroud)
  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转换为字符串和/或打印它的正确方法是什么,同时保证您始终具有相同的完全精度?

Rah*_*sim 8

astype方法效果很好:

>>> numpy.float64('6374.345407799015').astype(str)
'6374.345407799015'
Run Code Online (Sandbox Code Playgroud)


rep*_*cus 5

查看numpy.set_printoptions.特别,

numpy.set_printoptions(precision=15)
Run Code Online (Sandbox Code Playgroud)

  • 你看不到它,但我已经发布(并删除了)这个答案.问题是,这只会在将值打包到数组中时更改值的表示形式. (6认同)
  • 精度= 15是否足以准确表示float64数字? (6认同)
  • 我会被蘸了.你是对的,那是行不通的 (2认同)