为什么在更大的'中遇到无效值?在python xarray为nan发出警告?在没有任何问题的情况下,难道没有通勤吗?

时间:2016-12-13 20:38:19

标签: numpy python-xarray

以下是一个哲学问题,旨在弄清楚为什么xarray是它的方式。

我无法弄清楚Xarrays执行以下操作的方法。

positive_values = values.where(values > 0)  

它遵循x-arrays语法,并使用xarrays计算我想要它做什么,但抛出此运行时警告。

RuntimeWarning: invalid value encountered in greater if not reflexive  

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

我想说明nans在整个运营过程中通勤的意义非常出色。 (可以轻松发现或处理缺失的数据值)

IE。

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

这使得它们在X阵列中的表现非常有用。 xarrays可能缺少数据,但这不应该在数千个点上停止操作。

为什么>没有问题nan通勤?如果这是我想要的行为,我应该以其他方式这样做并忽略错误吗?

1 个答案:

答案 0 :(得分:6)

这不是故意的设计选择,应该修复。

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中),大熊猫为所有操作沉默了这种类型的NumPy警告 - 无论操作是否使用pandas完成。因为xarray导入了pandas,这意味着这些错误对于xarray操作也是沉默的。现在,我们需要添加自己的代码来消除这些警告。

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

提交错误