如何修复 numpy log inf 值和运行时警告



我正在计算自由能G = -RT ln(1-Y/Y)

Y 是一个 numpy 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 给出零除法错误:(我希望 ln 返回 -1)

在做完 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

这将替换数组中我无法接受的所有值。

如果您想避免错误,请提前预测它们:

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

相关内容

最新更新