2

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


我无法弄清楚 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没有任何问题?如果这是我想要的行为,我应该以其他方式执行此操作并忽略错误吗?

4

1 回答 1

8

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

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提交错误

于 2016-12-14T16:31:16.053 回答