我读过双标量,但只是部分理解。根据我的理解,这是Numpy可以计算的范围。这就是为什么这里的大多数问题都集中在除以零上(这是一个错误,因为答案将超出范围(无穷大))。
但我不确定我的理解是否正确。另外,我看不到有关RuntimeWarning:overflow在 double_scalars 中遇到的其他原因。什么会导致双标量中遇到溢出?
溢出错误意味着操作产生的值超出为相应数据类型定义的范围。对于 numpy double,该范围是(-1.79769313486e+308, 1.79769313486e+308). 另外,为了进行良好的讨论,请阅读这篇 SO post。
例子:
import numpy as np
np.seterr(all='warn')
print "Range of numpy double:", np.finfo(np.double).min, np.finfo(np.double).max
A = np.array([143],dtype='double')
a=A[-1]
print "At the border:", a**a
B = np.array([144],dtype='double')
b=B[-1]
print "Blowing out of range:", b**b
Run Code Online (Sandbox Code Playgroud)
输出:
Range of numpy double: -1.79769313486e+308 1.79769313486e+308
At the border: 1.6332525973e+308
Blowing out of range: inf
D:\anaconda\lib\site-packages\ipykernel\__main__.py:9: RuntimeWarning: overflow encountered in double_scalars
Run Code Online (Sandbox Code Playgroud)