抑制python xarray的警告

抑制python xarray的警告,python,python-3.x,suppress-warnings,python-xarray,Python,Python 3.x,Suppress Warnings,Python Xarray,我正在运行以下代码 positive_values = values.where(values > 0) 在此示例中,值可能包含nan元素。我相信出于这个原因,我得到了以下运行时警告: RuntimeWarning: invalid value encountered in greater_equal if not reflexive xarray是否有抑制这些警告的方法 该模块提供您需要的功能 要取消显示所有警告,请执行以下操作(请参阅为什么这不是良好做法): 要使抑制成为临

我正在运行以下代码

positive_values = values.where(values > 0)  
在此示例中,
可能包含
nan
元素。我相信出于这个原因,我得到了以下运行时警告:

RuntimeWarning: invalid value encountered in greater_equal if not reflexive  
xarray
是否有抑制这些警告的方法

该模块提供您需要的功能

要取消显示所有警告,请执行以下操作(请参阅为什么这不是良好做法):

要使抑制成为临时的,请在
warnings.catch\u warnings()上下文管理器中执行此操作:

import warnings

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

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

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

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

类似于
positive\u values=values.where(values.notnull&values>0)
?我喜欢这个建议。谢谢,谢谢你这么快的回复。我喜欢简洁/易读。这在可读性方面给代码增加了很多噪音。是否有方法使用警告库全局抑制某些警告(即:运行时警告)?或者这是python目前最好的功能吗?在主模块的顶部,执行
导入警告;warnings.simplefilter(“忽略”,category=RuntimeWarning)
。这将禁止所有运行时警告。正如@JohnColeman所指出的,这不是一个好的实践。这些警告的存在是有原因的。我要特别提醒大家不要在全球范围内禁止警告,因为你不知道你最终会错过什么警告。谢谢你的回复。我提出了一个问题,如果你感兴趣的话,为什么首先抛出警告。您可以在以下网址找到:
positive_values = values.where(values.notnull() & values > 0)