У меня есть массив Nx1, который соответствует распределению вероятности, т. Е. Сумма элементов суммируется с 1. Это представлено как обычный массив numpy. Так как N может быть относительно большим, например, 10 или 20, многие из отдельных элементов довольно близки к 0. Я нахожу, что когда я беру log (my_array), я получаю сообщение об ошибке «FloatingPointError: недопустимое значение, встречающееся в журнале». Обратите внимание, что это после установки seterr (invalid = 'raise') в numpy намеренно., берущий журнал очень малых значений с использованием numpy/scipy в Python
Как я могу решить эту цифровую проблему? Я хотел бы представлять векторы, соответствующие распределению вероятности, и их журнал регистрации без округления до 0, так как тогда я в конечном итоге беру log (0), что вызывает ошибку.
спасибо.
Вероятность нуля - это особый случай, почему вы считаете, что это то же самое, что и ненулевые вероятности? Почему бы просто не отфильтровать данные из данных и работать с ненулевым? –
Вы дважды проверили, что все значения в распределении действительно положительные? Нет отрицательных значений и нет значений, которые равны нулю? Действительно, небольшие значения не должны иметь значения. –
Такая же проблема, как: http://stackoverflow.com/questions/3704570/in-python-small-floats-tending-to-zero – monkut