2017-08-24 7 views
2

ブールインデックスのためにxarrayDataArrayオブジェクトを使用しています。それは時々...うまくいく。以下の例では、大きな配列のためではなく、小さなもののために働く:インデックス作成にブール値の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

これはnumpyののバグのように見えます。 .valuesはNumPy配列であり、NumPy配列はboolean配列のようなオブジェクト(xarray.DataArrayなど)でのインデックス作成を正しくサポートしていないようです:https://github.com/numpy/numpy/issues/9633

関連する問題