你需要改变方式
numpy
正在处理错误:
>>> arr1 = numpy.random.randint(0, 123, (10,))
>>> arr2 = numpy.random.randint(0,5, (10,))
>>> arr1, arr2
(array([ 0, 7, 15, 89, 110, 82, 53, 73, 64, 55]), array([2, 1, 3, 0, 2, 0, 2, 0, 0, 0]))
>>> arr1/arr2
__main__:1: RuntimeWarning: divide by zero encountered in true_divide
array([ 0. , 7. , 5. , inf, 55. , inf, 26.5, inf, inf, inf])
使用
seterr
:
>>> numpy.seterr(divide='raise') # returns old settings
{'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}
现在,将引发错误,您可以使用错误处理:
>>> arr1/arr2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FloatingPointError: divide by zero encountered in true_divide
比如:
>>> try:
... arr1/arr2
... except FloatingPointError as e:
... print("can't divide by zero!")
...
can't divide by zero!