我正在运行以下代码
positive_values = values.where(values > 0)
在这个例子values
中可能包含nan
元素。我相信出于这个原因,我会收到以下运行时警告:
RuntimeWarning: invalid value encountered in greater_equal if not reflexive
是否xarray
有抑制这些警告的方法?
我正在运行以下代码
positive_values = values.where(values > 0)
在这个例子values
中可能包含nan
元素。我相信出于这个原因,我会收到以下运行时警告:
RuntimeWarning: invalid value encountered in greater_equal if not reflexive
是否xarray
有抑制这些警告的方法?
该warnings
模块提供您正在寻找的功能。
要禁止所有警告(请参阅John Coleman 的回答,了解为什么这不是好的做法):
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)