python - 在 Python 中获取 numpy/scipy 中的日志比率

标签 python numpy floating-point scipy logarithm

我正在尝试计算两个对数值 ab 的比率,然后将其转换回非对数值。由于这些是对数值,比率 c 是:

from numpy import *
c = a - b
# convert to non-log value
val = exp(c)

考虑这个例子:

a = -336929.42757
b = -334216.16795

因为这些是对数值,所以比率是:

c = -2713.259620000026

然后我将比率转换为非对数值并得到 0:

val = exp(c)

我怎样才能避免这种情况?在没有这种行为的情况下,采用两个日志的比率并转换回非日志的正确方法是什么?

最佳答案

嗯,您期望的数字太小,无法使用 float 表示。 例如,在我的系统中:

In : sys.float_info.min_exp
Out: -1021

因此,你得到 0.0

如果您只想将它​​与某个截止值进行比较,您仍然可以使用结果 0。在您的情况下,“真实”不可表示的数字与 0 一样好。

关于python - 在 Python 中获取 numpy/scipy 中的日志比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024055/

相关文章:

python - 将文档字符串放在特殊方法上?

python - numpy 获取索引数组的数组数组中的值

javascript - 如何获取 JavaScript 中只有零的 float 的小数位?

python - 使用 sklearn 或 numpy 的基于内容的推荐系统

python - 如何根据 DataFrame 中前一行的值标记特定值?

scala - 如何比较 Scala 中的浮点值?

python - 使用逗号或点作为分隔符将 Python 字符串显式转换为 float

Python 拉皮条/猴子修补

python - 如何在Python中访问列表内元组内的列表

python - 当rospy.is_shutdown时停止serve_forever