2

に似た、各グループのメンバー数を数えようとしていpandas.DataFrame.groupby.countます。ただし、機能していないようです。次に例を示します。

In [1]: xr_test = xr.DataArray(np.random.rand(6), coords=[[10,10,11,12,12,12]], dims=['dim0'])
        xr_test
Out[1]: <xarray.DataArray (dim0: 6)>
        array([ 0.92908804,  0.15495709,  0.85304435,  0.24039265,  0.3755476 ,
                0.29261274])
        Coordinates:
          * dim0     (dim0) int32 10 10 11 12 12 12

In [2]: xr_test.groupby('dim0').count()
Out[2]: <xarray.DataArray (dim0: 6)>
        array([1, 1, 1, 1, 1, 1])
        Coordinates:
          * dim0     (dim0) int32 10 10 11 12 12 12

ただし、次の出力が期待されます。

Out[2]: <xarray.DataArray (dim0: 3)>
        array([2, 1, 3])
        Coordinates:
          * dim0     (dim0) int32 10 11 12

どうしたの?

言い換えると:

In [3]: xr_test.to_series().groupby(level=0).count()
Out[3]: dim0
        10    2
        11    1
        12    3
        dtype: int64
4

1 に答える 1

2

これはバグです!Xarray は現在、次元に対応する座標がすべて一意の値を持つという (この場合は誤った) 仮定を立てています。これは通常は良い考えですが、必須ではありません。別の座標を作成すると、これは適切に機能するはずです。 xr_test = xr.DataArray(np.random.rand(6), coords={'aux': ('x', [10,10,11,12,12,12])}, dims=['x']) xr_test.groupby('aux').count()

于 2016-06-28T10:39:53.220 に答える