使用 np.divide (与其他浮点数一起)将 0 除以 0 时如何抑制错误消息?

Mar*_*ark 4 python numpy

我的尝试:

import numpy as np
np.seterr(divide='ignore')
a=np.array([4/3,0,0])
b=np.array([1,0,0])
np.divide(a,b)
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

__main__:1: RuntimeWarning: invalid value encountered in true_divide
array(1.33333333,        nan, nan])
Run Code Online (Sandbox Code Playgroud)

如果我再问:

np.divide(a,b)
Run Code Online (Sandbox Code Playgroud)

然后不显示 RuntimeWarning。

我对输出的数组很满意,但我不想要错误消息;这就是我认为 seterr 会解决的问题。我怎样才能摆脱警告?(我宁愿不写一个为 0/0 设置例外的 for 循环。)

hpa*_*ulj 6

尝试:

np.seterr(invalid='ignore')
Run Code Online (Sandbox Code Playgroud)

或者

np.seterr(all='ignore')
Run Code Online (Sandbox Code Playgroud)

seterr文档:

- Invalid operation: result is not an expressible number, typically
  indicates that a NaN was produced.
Run Code Online (Sandbox Code Playgroud)

1/0产生FloatingPointError: divide by zero encountered in true_divide错误/警告。

0/0产生Warning: invalid value encountered in true_divide错误/警告。

all 会抓住两个。

errstate可以用来临时改变np.seterr

In [1472]: with np.errstate(invalid='print'):
    y=np.divide([1.2,0,0],[1,0,0])
   ......:     
Warning: invalid value encountered in true_divide
Run Code Online (Sandbox Code Playgroud)

warnings 一般都是在运行中第一次出现问题时发出,然后是无声的。