Ich habe eine Nx1-Array, die einer Wahrscheinlichkeitsverteilung entspricht, d. H. Die Summe der Elemente summiert sich zu 1. Dies wird als eine regelmäßige numpy-Array dargestellt. Da N möglicherweise relativ groß ist, z.B. 10 oder 20, viele der einzelnen Elemente sind ziemlich nahe bei 0. Ich finde, dass, wenn ich log (my_array) nehme, bekomme ich den Fehler "FloatingPointError: ungültiger Wert im Protokoll gefunden". Beachten Sie, dass dies absichtlich geschieht, nachdem setterr (invalid = 'raise') in numpy gesetzt wurde.Log von sehr kleinen Werten mit numpy/scipy in Python
Wie kann ich mit diesem numerischen Problem umgehen? Ich möchte Vektoren darstellen, die einer Wahrscheinlichkeitsverteilung und ihrem Take-Protokoll entsprechen, ohne auf 0 zu runden, da ich dann log (0) nehme, was den Fehler auslöst.
danke.
Wahrscheinlichkeit von Null ist ein Sonderfall, warum würden Sie es als die gleichen Wahrscheinlichkeiten ungleich Null betrachten? Warum nicht einfach aus den Daten herausfiltern und nur mit Nicht-Null arbeiten? –
Haben Sie überprüft, dass alle Werte in der Distribution wirklich positiv sind? Keine negativen Werte und keine Werte, die genau Null sind? Wirklich kleine Werte sollten keine Rolle spielen. –
Gleiches Problem wie: http://stackoverflow.com/questions/3704570/in-python-small-floats-tending-to-zero – monkut