Ermitteln der Berechnung, die ein NaN erzeugt

8

Ich habe ein ziemlich großes Stück (ein paar tausend Zeilen) Python / Numpy / Scipy-Code, der NaNs mit bestimmten Eingaben hochwirft. Ich habe einige der üblichen Verdächtigen ( log(0) und dergleichen) gesucht und gefunden, aber keine der offensichtlichen scheint in diesem Fall die Schuldigen zu sein.

Gibt es einen relativ schmerzlosen Weg (d. h. abgesehen von der Behandlung von Ausnahmebehandlungscode um jeden potenziellen Täter), um herauszufinden, woher diese NaNs kommen?

    
Chinmay Kanchi 02.06.2011, 11:24
quelle

2 Antworten

9

Ich würde mit numpy.seterr beginnen.

Dort wird eine ungültige Operation definiert als "Ergebnis ist keine ausdrückliche Zahl, zeigt typischerweise an, dass ein NaN erzeugt wurde". Standardmäßig scheint dies auf "Ignorieren" eingestellt zu sein.

    
NPE 02.06.2011, 11:26
quelle
3

Sie können numpy.seterr verwenden, um das Fließkommafehlerbehandlungsverhalten global für alle numpy Routinen festzulegen. Das sollte dir zeigen, wo im Code sie herkommen (oder zumindest wo numpy sie zum ersten Mal sieht).

    
talonmies 02.06.2011 11:33
quelle

Tags und Links