为什么在 nan 的 python xarray 中抛出 'invalid value encountered in greater' 警告?南通勤不应该没有任何问题吗?

Why is 'invalid value encountered in greater' warning thrown in python xarray for nan? Shouldn't the nan commute without any issues?

以下是哲学问题,旨在弄清楚为什么 xarrays 是这样的。


我无法找出 Xarrays 方法来执行以下操作。

positive_values = values.where(values > 0)  

它遵循 x-arrays 语法,并使用 xarrays 计算我希望它执行的操作,但抛出此运行时警告。

RuntimeWarning: invalid value encountered in greater if not reflexive  

我的问题是,我如何滥用 Xarrays

我想证明 nans 非常出色,因为它们可以跨操作进行通勤。 (便于发现或处理缺失的数据值)

即。

value = np.nan + 1  
final_value = value/2  
#final_value evaluates to 'nan'

这使得它们在 X 数组中的表示非常有用。 xarrays 可能缺少数据,但这不应停止跨越数千个点的操作。

为什么 > 通勤 nan 没有任何问题?如果这是我想要的行为,我是否应该以其他方式执行此操作并忽略错误?

这不是有意的设计选择,应予以修复。

NumPy 在与 NaN 进行比较时发出警告,因为结果可能令人惊讶,至少如果您不熟悉与 NaN 的比较是如何工作的话:

In [6]: np.array([1, -1, np.nan]) > 0
/Users/shoyer/conda/envs/xarray-dev/bin/ipython:1: RuntimeWarning: invalid value encountered in greater
  #!/Users/shoyer/conda/envs/xarray-dev/bin/python
Out[6]: array([ True, False, False], dtype=bool)

可以说,如果结果类似于 [True, False, NA] 会更直观,但 NumPy 没有集成缺失值支持。

直到最近(在 pandas 0.19 中),pandas 将所有操作的此类 NumPy 警告静音——无论该操作是否使用 pandas 完成。因为 xarray 导入 pandas,这意味着这些错误对于 xarray 操作也被抑制了。现在,我们需要添加自己的代码来消除这些警告。

更新: 这应该从 xarray v0.10 开始解决。如果您仍然遇到它,请在 http://github.com/pydata/xarray/issues

提交错误