以下是一个哲学问题,旨在弄清楚为什么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
通勤?如果这是我想要的行为,我应该以其他方式这样做并忽略错误吗?
答案 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
提交错误