2013-02-14 27 views
5

Büyük bir veri kümesinde okumak için numpy loadtxt işlevini kullanıyorum. Veriler yuvarlanmış görünüyor. örneğin: Metin dosyasındaki sayı -3.79000000000005E + 01'dir, ancak numpy bu sayıyı -37.9 olarak okur. Dypte'yi loadtxt çağrısında np.float64 olarak ayarlıyorum. Orijinal veri dosyasının kesinliğini korumak için zaten var mı? Numarayı yuvarlamayanNumpy loadtxt yuvarlama sayılar

cevap

5

loadtxt.

In [80]: import numpy as np 

In [81]: x = np.loadtxt('test.dat', dtype = np.float64) 

In [82]: print(x) 
-37.9 

gerçek değer girilen değere en yakın np.float64 geçerli: Ne görüyoruz NumPy baskı için seçtiği yolu dizidir.

In [83]: x 
Out[83]: array(-37.9000000000005) 

Veya, daha yüksek boyutlu bir dizilime daha muhtemel örneği, içinde

In [2]: x = np.loadtxt('test.dat', dtype = np.float64) 

Eğer x ait repr kesik görünüyor:

In [3]: x 
Out[3]: array([-37.9, -37.9]) 

kullanabilirsiniz Daha yüksek hassasiyet için 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]) 

(teşekkürler bu işaret için @mgilson için.)

+1

Ayrıca [ 'np.set_printoptions'] söz öğretici olabilir (http://docs.scipy.org/doc/numpy/reference /generated/numpy.set_printoptions.html) – mgilson

+0

Mükemmel. Bu gizemi çözdü. Np.set_printoptions öğesinin değiştirilmesi, tam sayıların yazdırılmasını sağlar. – JMD