3

我需要自动引发错误,如果我使用“/”运算符在 numpy 数组中除以零,或者如果我执行任何操作会更好,这会导致 nan。

numpy 所做的是返回 nan 值。在那之后我不需要我的程序运行,因为显然有一个错误。

我想知道何时使用除以零以及在哪一行。只是禁止创建任何 nan 值。

4

2 回答 2

1

默认行为是发出警告,但您可以使用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
于 2021-02-11T15:39:12.940 回答
0

你可以做这样的事情:

# 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
于 2021-02-11T15:35:18.697 回答