2016-11-03 2 views
0

Ich versuchte np.set_printoptions (Genauigkeit = 100) in Python zu setzen aber der Ausgang ist immer noch so etwas wie -0,00510610862213Anzeige mehr als 16 Stellen in numpy

Gibt es trotzdem zum Beispiel angezeigt werden 100 Ziffern?

+2

Ich glaube nicht, NumPy –

+0

jede beliebige Präzision akzeptiert Ich hoffe, Sie sind sich bewusst, dass die Anzeigegenauigkeit der Konfiguration wird nichts tun, um Ihnen mehr als 16 Stellen Genauigkeit für die Speicherung oder Berechnung. – user2357112

+0

ok. Danke, dass du mich bekannt gegeben hast. – user26143

Antwort

2

Sie können die Anzeigegenauigkeit bis zu einem Punkt ändern. Zum Beispiel können wir unter die Anzahl der angezeigten Ziffern bis zu einem Punkt ändern, nach dem keine Ziffern mehr angezeigt werden.

In [1]: import numpy as np 
In [2]: np.random.seed(42) 
In [3]: a = np.random.randn(1,1) 
In [4]: a 
Out[4]: array([[ 0.49671415]]) 

In [5]: np.set_printoptions(precision=4) 
In [6]: a 
Out[6]: array([[ 0.4967]]) 

In [7]: np.set_printoptions(precision=54) 
In [8]: a 
Out[8]: array([[ 0.4967141530112326730517224859795533120632171630859375]]) 

In [9]: np.set_printoptions(precision=55) 
In [10]: a 
Out[10]: array([[ 0.4967141530112326730517224859795533120632171630859375]]) 

Aber, ist es unklar, warum Sie da, dies tun möchte, wie @ user2357112 zu entzog, wird dies nicht die numerische Präzision ändern. Die Standardeinstellung ist in numpy 64 bit floats speichern, die als here beschrieben, sind nur präzise bis höchstens 15 signifikante Stellen

Man erhält 15-17 signifikanten Dezimalziffern Präzision. Wenn eine Dezimalzeichenfolge mit höchstens 15 signifikanten Ziffern in IEEE 754-Doppelpräzision -Darstellung konvertiert und dann wieder in eine Zeichenfolge mit der gleichen Anzahl von signifikanten Ziffern konvertiert wird, sollte die endgültige Zeichenfolge mit dem Original übereinstimmen. Wenn eine IEEE 754 doppelte Genauigkeit in eine Dezimalzeichenfolge mit mindestens 17 signifikanten Stellen konvertiert und dann zurück in die doppelte Zahl konvertiert wird, muss die endgültige Zahl dem Original entsprechen.

Ein Beispiel hierfür dargestellt mit

In [11]: np.float64('0.454125401') 
Out[11]: 0.45412540099999998 
Verwandte Themen