我正在使用 numpy loadtxt 函数来读取大量数据。数据似乎四舍五入。例如:文本文件中的数字是 -3.79000000000005E+01 但 numpy 读取的数字为 -37.9。我在 loadtxt 调用中将 dypte 设置为 np.float64 。无论如何要保持原始数据文件的精度?
问问题
4711 次
1 回答
6
loadtxt
不是四舍五入的数字。您看到的是 NumPy 选择打印数组的方式:
In [80]: import numpy as np
In [81]: x = np.loadtxt('test.dat', dtype = np.float64)
In [82]: print(x)
-37.9
实际值是最接近输入值的 np.float64。
In [83]: x
Out[83]: array(-37.9000000000005)
或者,在更有可能的情况下,你有一个更高维的数组,
In [2]: x = np.loadtxt('test.dat', dtype = np.float64)
如果repr
ofx
看起来被截断:
In [3]: x
Out[3]: array([-37.9, -37.9])
你可以np.set_printoptions
用来获得更高的精度:
In [4]: np.get_printoptions()
Out[4]:
{'edgeitems': 3,
'infstr': 'inf',
'linewidth': 75,
'nanstr': 'nan',
'precision': 8,
'suppress': False,
'threshold': 1000}
In [5]: np.set_printoptions(precision = 17)
In [6]: x
Out[6]: array([-37.90000000000050306, -37.90000000000050306])
(感谢@mgilson 指出这一点。)
于 2013-02-14T23:09:10.370 回答