python - Python中scipy/numpy中的exp溢出?

标签 python numpy scipy

以下错误是什么意思:

Warning: overflow encountered in exp

在 scipy/numpy 中使用 Python 一般是什么意思?我正在计算对数形式的比率,即 log(a) + log(b),然后使用 exp 取结果的指数,并使用 logsumexp 的总和,如下所示:

c = log(a) + log(b)
c = c - logsumexp(c)

数组 b 中的某些值被有意设置为 0。它们的日志将为 -Inf。

此警告的原因可能是什么?谢谢。

最佳答案

在您的情况下,这意味着 b 在您的数组中的某个地方 very 很小,并且您得到一个数字(a/bexp(log(a) - log(b))) 对于用于存储输出的数组的任何 dtype(float32、float64 等)来说都太大了。

Numpy可以配置成

  1. 忽略这类错误,
  2. 打印错误,但不发出警告以停止执行(默认)
  3. 记录错误,
  4. 发出警告
  5. 引发错误
  6. 调用用户定义的函数

numpy.seterr控制它如何处理 float 组中的下溢/溢出等。

关于python - Python中scipy/numpy中的exp溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359959/

相关文章:

python - 使用带有列表理解的嵌套 for 循环构建列表

android - GCM collapse_key 不工作

python - 从列表中删除项目(如果存在)

python - 打印完整的 coo_matrix

python - Python 中的 ODE 求解器出错

python - 为什么正则表达式交替 (A|B) 不按照文档匹配?

python - 匹配特定形状的 Numpy 零填充

python - 使用 numpy 将棕褐色效果应用于 3D 数组

python - 读取制表符分隔的文件,第一列作为键,其余列作为值

python - scipy 稀疏矩阵,复制参数