как исправить значения numy log inf и RuntimeWarning - PullRequest
0 голосов
/ 17 января 2019

Я рассчитываю свободную энергию G = -RT ln (1-Y / Y)

Y - нудистский ndarray

Проблема в том, что элемент Y = 1 или 0.

try:
    log_value = np.log((1-Y)/Y)
except ZeroDivisionError as e:
    log_value = -1
except RuntimeWarning:
    log_value = 1

Z = -0.0083145*X*log_value

, если Y = 1 ln, дает ошибку времени выполнения и значение как -inf (я хочу, чтобы ln вернул 1)

если Y = 0, ln дает ZeroDivisionError: (я хочу, чтобы ln вернул -1)

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если вы хотите избежать ошибок, заранее их предупредите:

if Y == 1:
    log_value = 1
elif Y == 0:
    log_value = -1
else:
    log_value = np.log((1-Y)/Y)


Z = -0.0083145*X*log_val
0 голосов
/ 17 января 2019

после выполнения np.log я просто добавил

temp_log = np.log((1-Y)/Y)
temp_log[temp_log==-np.inf] = 1
temp_log[temp_log==-0] = -1
Z = -0.0083145*X*temp_log

это заменяет все значения, которые я не принимаю в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...