我正在尝试在Python中获得C型语言的“正常”上溢/下溢行为。令我惊讶的是,当我尝试获得这种行为时,出现了RuntimeWarning
。示例:
np.uint8(255) + np.uint8(1)
>>> RuntimeWarning: overflow encountered in ubyte_scalars
有什么方法可以模拟所需的行为,即255 + 1给出0吗?
我尝试了文档,但是找不到记录的这种行为。
答案 0 :(得分:1)
我相信numpy确实会给您正确的行为。
In [1]: np.uint8(255) + np.uint8(1)
/usr/bin/ipython:1: RuntimeWarning: overflow encountered in ubyte_scalars
#!/usr/bin/python2
Out[1]: 0
您可以通过运行以下命令禁止显示警告:
In [1]: np.seterr(over='ignore')
Out[1]: {'divide': 'warn', 'invalid': 'warn', 'over': 'warn', 'under': 'ignore'}
In [2]: np.uint8(255) + np.uint8(1)
Out[2]: 0