我需要自动引发错误,如果我使用“/”运算符在 numpy 数组中除以零,或者如果我执行任何操作会更好,这会导致 nan。
numpy 所做的是返回 nan 值。在那之后我不需要我的程序运行,因为显然有一个错误。
我想知道何时使用除以零以及在哪一行。只是禁止创建任何 nan 值。
我需要自动引发错误,如果我使用“/”运算符在 numpy 数组中除以零,或者如果我执行任何操作会更好,这会导致 nan。
numpy 所做的是返回 nan 值。在那之后我不需要我的程序运行,因为显然有一个错误。
我想知道何时使用除以零以及在哪一行。只是禁止创建任何 nan 值。
默认行为是发出警告,但您可以使用np.seterr设置行为:
>>> import numpy as np
>>> np.array([1,2,3]) / np.array([0, 1, 2])
__main__:1: RuntimeWarning: divide by zero encountered in true_divide
array([inf, 2. , 1.5])
在我们将其更改为“raise”之后:
>>> np.seterr(divide='raise')
{'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}
>>> np.array([1,2,3]) / np.array([0, 1, 2])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FloatingPointError: divide by zero encountered in true_divide
你可以做这样的事情:
# sample data
arr1 = np.array([1,2,3,4])
arr2 = np.array([1,1,0,1])
# this will raise the error
assert (arr2!=0).all(), 'Division by zero'
# divide
arr1/arr2
当你运行代码时,你会得到:
4
5 # this will raise the error
----> 6 assert (arr2!=0).all(), 'Division by zero'
7
8 # divide
AssertionError: Division by zero