首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy日志溢出记录在哪里?

numpy日志溢出记录在哪里?
EN

Stack Overflow用户
提问于 2020-12-11 09:01:09
回答 2查看 121关注 0票数 1

考虑这些数值精度问题:

代码语言:javascript
复制
import numpy as np
np.log10(1e-324)   # -inf & divide-by-zero
np.log10(1e+309)   # +inf
np.round(x,  +308) # inf
np.round(x,  +309) # nan
np.round(x,  -308) # nan

这些数字足以导致溢出(?)在我的电脑上。

在numpy中,与此相关的文档在哪里?我怎样才能准确地预测这些值呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-11 10:00:24

相关的完整文档可能不是NumPy本身,而是遵循IEEE754标准。

对此的一个很好的解释是在GeeksforGeeks标准754浮点数中。

该标准还规定了对非数字操作数(无穷大、NANs)的基本数学运算的结果--请参阅我上面链接中的页尾--当处理器执行NumPy函数的算法时(如示例中的np.log10()np.round() ),处理器的浮点单元(FPU)遵循它们。

NumPy (和Python)自己执行的是

  • 非常大的数字(如您的1e+309)到无穷大的隐式转换,
  • 将非常小的数字(如1e-324)隐式转换为零,
  • 用自己的(或“借来的”)算法计算函数的结果。

因此,np.log10(1e-324)被计算为np.log10(0),这在理论上是不存在的,但是尽管如此,算法还是使用这个零值来计算它(有效地计算了极限)。

在执行此计算过程中,该算法会被除以零,但该算法捕获ZeroDivisionError异常并代之以RuntimeWarning,因为它认为这个零值是一个“正”零,即可以将(正或负)有限数除以它(给出正无穷大或负无穷大的结果)。

结果是负无穷大,当然,越来越小的正值(“无限小”小值)的对数极限。

票数 2
EN

Stack Overflow用户

发布于 2020-12-11 09:18:07

数据类型记录在数据类型中。NumPy支持float64类型,它提供了从1.7976931348623158E+3082.2250738585072014E-308的范围。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65248379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档