Numpy 为什么是';在较大的';python xarray中为nan抛出的警告?不应该';南部的通勤不是没有任何问题吗?

Numpy 为什么是';在较大的';python xarray中为nan抛出的警告?不应该';南部的通勤不是没有任何问题吗?,numpy,python-xarray,Numpy,Python Xarray,下面是一个哲学问题,旨在找出为什么Xarray是这样的 我很难想出Xarray做以下事情的方法 positive_values = values.where(values > 0) 它遵循x-array语法,并使用xarrays计算我希望它执行的操作,但抛出此运行时警告 RuntimeWarning: invalid value encountered in greater if not reflexive 我的问题是,我是如何滥用Xarrays的 我想说明的是,nan非常优

下面是一个哲学问题,旨在找出为什么Xarray是这样的


我很难想出Xarray做以下事情的方法

positive_values = values.where(values > 0)  
它遵循x-array语法,并使用xarrays计算我希望它执行的操作,但抛出此运行时警告

RuntimeWarning: invalid value encountered in greater if not reflexive  
我的问题是,我是如何滥用Xarrays的

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


更新:这应该从xarray v0.10开始解决。如果您仍然遇到此问题,请在

上提交一个错误。没有答案,只是对它的价值进行评论:
nan
nan
(即
nan
=
nan
False
),因此
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)