Numpy loadtxt四舍五入的数字

时间:2013-02-14 23:02:28

标签: python numpy

我正在使用numpy loadtxt函数来读取大量数据。数据似乎四舍五入。例如:文本文件中的数字是-3.79000000000005E + 01,但是numpy以-37.9的形式读取数字。我在loadtxt调用中将dypte设置为np.float64。反正是否保持原始数据文件的精度?

1 个答案:

答案 0 :(得分: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的{​​{1}}看起来被截断:

x

您可以使用In [3]: x Out[3]: array([-37.9, -37.9]) 来获得更高的精确度:

np.set_printoptions

(感谢@mgilson指出这一点。)