什么时候可以使用布尔型 DataArray 进行索引?
When can I use a boolean DataArray for indexing?
我正在使用 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]
。但我对观察到的行为感到很困惑。)
这似乎是 NumPy 中的错误。 .values
是一个 NumPy 数组,NumPy 数组似乎不支持使用类似布尔数组的对象(如 xarray.DataArray
)进行索引:https://github.com/numpy/numpy/issues/9633
我正在使用 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]
。但我对观察到的行为感到很困惑。)
这似乎是 NumPy 中的错误。 .values
是一个 NumPy 数组,NumPy 数组似乎不支持使用类似布尔数组的对象(如 xarray.DataArray
)进行索引:https://github.com/numpy/numpy/issues/9633