On 2014-10-30, Christopher Arndt wrote:
Am 30.10.2014 um 14:19 schrieb Bernd Nawothnig:
np.float64(-57.9) == float('nan') True
Ich kann deine Ergebnisse mit Python 3.4.2 und Numpy 1.9.0 nicht reproduzieren (Linux x86_64).
Dieselbe Architektur, strange. numpy 1.9.0 verwende ich auch, Python ist die Version von Ubuntu 14.04, also 3.4.0 (keine Ahnung, warum die das nicht für nötig halten, zu aktualisieren).
Welche Versionen, OS und Architektur benutzt du?
#v+ bernd@bernd:~$ uname -a Linux bernd 3.13.0-39-generic #66-Ubuntu SMP Tue Oct 28 13:30:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux #v- Numpy habe ich aus den Quellen lokal gebaut (gcc 4.8.2), allerdings mit Compilerflag -ffast-math. Klar ändern sich dadurch die Ergebnisse etwas (sollten genauer sein, als IEEE vorschreibt), aber deswegen können doch nicht beliebige Gleitkommawerte == NaN sein, oder? Dasselbe tritt auch auf, wenn ich np.NaN statt float('nan') verwende. Witzigerweise funktioniert np.isnan zwar auf arrays, aber nicht auf Einzelwerten: #v+ Python 3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2] on linux Type "help", "copyright", "credits" or "license" for more information.
import numpy as np a = np.array([1.7, float('nan'), 37.9], np.float64) a array([ 1.7, nan, 37.9]) np.isnan(a) array([False, True, False], dtype=bool) np.isnan(np.NaN) False np.isnan(float('nan')) False
#v-
Bernd -- no time toulouse