1

EDIT 2016-01-24: この動作は、xarray (当時は「xray」と呼ばれていました) のバグによるものでした。以下のskcによる回答を参照してください。

xarray.DataArray複数年にわたる毎日のデータを構成しています。時系列の各月のそのデータの時間傾向を計算したいと思います。を使用して、分子、つまり各月の数量の変化を取得できますresample。と仮定すると、次の名前の時間座標を持つarr私のオブジェクトです。xarray.DataArray'time'

data_first = arr.resample('1M', 'time' how='first')
data_last = arr.resample('1M', 'time' how='last')

次にdata_last - data_first、その月のその変数の変化を教えてくれます。

time=arr.timeただし、これはオブジェクト自体では機能しません。'first''last'kwarg の両方の値は、その月の最終日である同じ値を生成します。また、時系列の個々の月内の最初と最後の時間値が必要な場合に、すべての 1 月をまとめたり、すべての 2 月をまとめたりするなどして、groupbyメソッドを使用できないためです。time.month

xarrayでこれを行う簡単な方法はありますか? はいと思いますが、私はパッケージに不慣れで、惨めに失敗しています。

4

1 に答える 1

2

'time'はあなたが提供した DataArray の座標であるため、現時点では1 つのプリフォームを直接リサンプルすることはできません。考えられる回避策は、時間座標値を変数として使用して新しい DataArray を作成することです (同じ座標にリンクされたままです'time') 。

arr開始元の DataArray である場合、次のようなことをお勧めします。

time = xray.DataArray(arr.time.values, coords=[arr.time.values], dims=['time'])
time_first = time.resample('1M', 'time', how='first')
time_last = time.resample('1M', 'time', how='last')
time_diff = time_last - time_first

1これは意図した動作ではありません。上記のステファンのコメントを参照してください。

更新: プル リクエスト 648でこの問題が修正されたため、回避策を使用する必要はなくなりました。

于 2015-10-15T22:56:52.260 に答える