如何在python numpy中引发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

相关内容

  • 没有找到相关文章

最新更新