5
我使用numpy loadtxt函數讀取一大組數據。數據似乎四捨五入。例如:文本文件中的數字是-3.79000000000005E + 01,但numpy以-37.9讀取數字。我已經在loadtxt調用中將dypte設置爲np.float64。無論如何要保持原始數據文件的精度?Numpy loadtxt舍入數字
我使用numpy loadtxt函數讀取一大組數據。數據似乎四捨五入。例如:文本文件中的數字是-3.79000000000005E + 01,但numpy以-37.9讀取數字。我已經在loadtxt調用中將dypte設置爲np.float64。無論如何要保持原始數據文件的精度?Numpy loadtxt舍入數字
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)
如果x
的repr
看起來截斷:
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指出這一點。)
它也可能是有益的提['np.set_printoptions'](http://docs.scipy.org/doc/numpy/reference /generated/numpy.set_printoptions.html) – mgilson 2013-02-14 23:20:03
非常好。這解決了這個謎團。更改np.set_printoptions可以打印完整的數字。 – JMD 2013-02-14 23:26:21