如何在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])

在我们将其更改为“加注”之后:

>>> np.seterr(divide='raise')
{'divide': 'warn','over': 'warn','under': 'ignore','invalid': 'warn'}
>>> np.array([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,3,4])
arr2 = np.array([1,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