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?
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.