Ho una matrice Nx1 che corrisponde a una distribuzione di probabilità, vale a dire la somma degli elementi somme a 1. Questo è rappresentato come un normale array numpy. Poiché N potrebbe essere relativamente grande, ad es. 10 o 20, molti dei singoli elementi sono abbastanza vicini a 0. Trovo che quando prendo log (my_array), ottengo l'errore "FloatingPointError: valore non valido rilevato nel registro". Si noti che questo è dopo aver impostato seterr (invalid = 'raise') in numpy intenzionalmente.prendendo il registro di valori molto piccoli usando numpy/scipy in Python
Come posso risolvere questo problema numerico? Mi piacerebbe rappresentare i vettori corrispondenti a una distribuzione di probabilità e il loro log di registrazione senza arrotondamento a 0, da allora finisco per prendere il log (0) che solleva l'errore.
grazie.
Probabilità di zero è un caso speciale, perché dovresti considerarlo uguale a probabilità non zero? Perché non filtrarlo semplicemente dai dati e lavorare solo con il non zero? –
Hai ricontrollato che tutti i valori nella distribuzione sono davvero positivi? Nessun valore negativo e nessun valore esattamente uguale a zero? Valori davvero piccoli non dovrebbero avere importanza. –
Lo stesso problema di: http://stackoverflow.com/questions/3704570/in-python-small-floats-tending-to-zero – monkut