抑制 python-xarray 的警告

Suppress warnings for python-xarray

我是运行下面的代码

positive_values = values.where(values > 0)  

在此示例中,values 可能包含 nan 个元素。我相信由于这个原因,我收到了以下运行时警告:

RuntimeWarning: invalid value encountered in greater_equal if not reflexive  

xarray是否有抑制这些警告的方法?

warnings 模块提供了您正在寻找的功能。

要抑制所有警告,请执行以下操作(请参阅 为什么这不是一个好的做法):

import warnings
warnings.simplefilter("ignore") 
# warnings.simplefilter("ignore", category=RuntimeWarning) # for RuntimeWarning only

要使抑制暂时在 warnings.catch_warnings() 上下文管理器中执行:

import warnings

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    positive_values = values.where(values > 0)  

上下文管理器在进入上下文之前保存原始警告设置,然后在退出上下文时将它们设置回来。

根据一般的经验法则,应该注意警告而不是压制警告。您要么知道导致警告的原因,要么不知道。如果您知道导致警告的原因,通常有一个简单的解决方法。如果您不知道导致警告的原因,则可能存在错误。在这种情况下,您可以使用 & 的短路性质,如下所示:

positive_values = values.where(values.notnull() & values > 0)