我使用了Spyder(Python 3.6)
我的问题在于我的一个循环"对于",我得到了一个时刻" RuntimeWarning:在true_divide"
中遇到的除以零问题是(因为它与我的" tqdm&#34相比如此之快;)我无法知道它在何时何地被提出。
我试图使用:
print("ii = " + str(ii) + ", jj = " + str(jj) + ... + ", zz = " + str(zz))
或者:
try :
blablabla
except:
sys.exit
但是第一次和第二次的效果都很慢,因为它不是错误而只是警告。提出警告时有没有办法停止脚本,所以我可以自己调查?
提前致谢。
答案 0 :(得分:0)
您需要更改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!