gpt4 book ai didi

python - 什么决定了 numpy 在除以零时是返回 NAN 还是 INF

转载 作者:行者123 更新时间:2023-12-05 02:31:06 24 4
gpt4 key购买 nike

我试图理解以下结果:

In [1]: with np.errstate(divide='ignore', invalid='ignore'):
...: for val in 1e-324,2e-324,3e-324:
...: val_by_zero = np.array([val])/0
...: print( val_by_zero, np.nan_to_num(val_by_zero))
...:
...:
[nan] [0.]
[nan] [0.]
[inf] [1.79769313e+308]


In [2]: np.__version__
Out[2]: '1.20.3'

In [3]: np.finfo(np.float64)
Out[3]: finfo(resolution=1e-15, min=-1.7976931348623157e+308, max=1.7976931348623157e+308, dtype=float64)

我只是很好奇 numpy 库中到底发生了什么来确定 float 是 inf 还是 nan。

这是在 CentOS Linux 版本 7.9.2009 上运行的 python 3.8.12。

注意:我在检查了一个被不需要的大数字(例如 float max 1.79769313e+308)。我想这些 vals 是平台和/或配置相关的。

最佳答案

第一个可以用float64表示的正数是5e-324

from numpy import nextafter
# Starting from 0 and going towards 1, what is the next representable value?
nextafter(0, 1, dtype='float64')
# Out: 5e-324

1e-3242e-324 更接近于 0,因此它们表示为 0 但 3e-324 更接近于 5e-324 所以表示为5e-324

from numpy import array
array([1e-324, 2e-324, 3e-324], dtype='float64')
# Out: array([0.e+000, 0.e+000, 5.e-324])

此时它归结为正数/0 vs 0/0。前者无穷大,后者不确定。

关于python - 什么决定了 numpy 在除以零时是返回 NAN 还是 INF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71667082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com