我什么时候可以使用布尔DataArray进行索引?

时间:2017-08-24 14:21:14

标签: python numpy xarray

我正在使用xarray DataArray对象进行布尔索引。它有效......有时候。在下面的示例中,它适用于大型数组,但不适用于小型数组:

In [12]: x = xarray.DataArray(numpy.arange(336*49).reshape(336,49))

In [13]: x.values[x==-1]
Out[13]: array([], dtype=int64)

In [14]: x = xarray.DataArray(numpy.arange(20*10).reshape(20, 10))

In [15]: x.values[x==-1]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-15-9340240dc777> in <module>()
----> 1 x.values[x==-1]

IndexError: too many indices for array

它应该是可能的吗?为什么它在一个案例中有效但在另一个案例中却没有?

(当然,正确的改编是x.values[x.values==-1]。但我对观察到的行为感到非常困惑。)

1 个答案:

答案 0 :(得分:2)

这似乎是NumPy中的一个错误。 .values是一个NumPy数组,而NumPy数组似乎不能正确支持使用类似布尔数组的对象(如xarray.DataArray)进行索引:https://github.com/numpy/numpy/issues/9633