numpy: Invalid value encountered in true_divide

Habe ich zwei numpy-arrays, und ich versuche, zu teilen, eins mit der anderen und zur gleichen Zeit, ich möchte sicherstellen, dass die Einträge, bei denen der divisor 0 ist, sollte einfach ersetzt werden mit 0.

So, ich will so etwas wie:

log_norm_images = np.where(b_0 > 0, np.divide(diff_images, b_0), 0)

Das gibt mir die Laufzeit Warnung:

RuntimeWarning: invalid value encountered in true_divide

Nun, ich wollte sehen, was Los war und ich habe die folgenden:

xx = np.isfinite(diff_images)
print (xx[xx == False])

xx = np.isfinite(b_0)
print (xx[xx == False])

Jedoch sind beide leer zurück-arrays, was bedeutet, dass alle Werte in den arrays sind endlich. Also, ich bin nicht sicher, wo der ungültigen Wert kommt. Ich gehe davon aus, dass die überprüfung b_0 > 0 in der np.wo die Funktion kümmert sich um die Division durch 0.

Form von zwei arrays (96, 96, 55, 64) und (96, 96, 55, 1)

  • Warum würde xx werden False und ein dict?
  • Ich denke, isfinite gibt einen boolean-array. Also, ich bin auf der Suche nach Orten, wo die Werte sind NICHT begrenzt.
  • Versuchen [x for x in xx if x == False]. Sie sind nur versuchen, Holen die Schlüssel False
  • Du meinst wie diese: print (xx[x for x in xx falls x == False]). Dies wirft einen syntax-Fehler.
  • Verwandte denke ich mal: stackoverflow.com/q/26248654/846892
  • Danke für den link, aber ich habe dieses deckte sich mit der np.wo Funktion, wo die division sollte nur passieren, wenn der divisor größer als 0,
  • Für was es Wert ist, können Sie "invertiert" ein boolean-array mit der ~ Betreiber. E. g. print your_data[~np.isfinite(your_data)].

InformationsquelleAutor Luca | 2015-01-08
Schreibe einen Kommentar