2016-11-16 4 views
1

xarrayチュートリアルデータセットに霜の日数を追加しようとしています。xarrayデータセットを拡張する

airtemps = xr.tutorial.load_dataset('air_temperature') 
# The set spans more than a year, let's take only one 
airtemps = airtemps.sel(time=slice('2013-01-01', '2013-12-31')) 
airtemps['air'] = airtemps.air - 273.15 

データはそう簡単に処理するために、私はリサンプリングかなり高解像度の時間的であるそれら air_day = airtemps.resample( '1D'、 '時間'、どのように= '平均') air_month = air_day。

私が結果として、air_monthには、3つの次元すべてに沿って、平均値がゼロ以下の日数を追加したいと考えています(つまり、「1M」、「時間」、「方法」、「平均」) 。

私の非常にナイーブな試みはsthです。この

air_month['frost'] = sum(air_day.air < 0) 

ようしかしsum() INGで、私はここで時間ディメンションを失います。私はここで立ち往生していますが、まだ私の頭の周りのxarrayの概念を包んでいない。

ありがとうございました!

+0

わからないが、それが動作するようです: 'air_dayプロット(col = '月'、col_wrap = 3) ' – TomTom101

答えて

0

あなたはほとんどそこにいました! そして、あなたのGROUPBYは非常に似ている(といくつかの点でよりよい与えxarrayのリサンプルはまだGROUPBYではない)それをする*方法*このかどうか

In [24]: (air_day.air < 0).resample('M', dim='time', how='sum') 
Out[24]: 
<xarray.DataArray 'air' (time: 12, lat: 25, lon: 53)> 
array([[[31, 31, 31, ..., 31, 31, 31], 
     [31, 31, 31, ..., 31, 31, 31], 
     [31, 31, 31, ..., 31, 31, 31], 
     ..., 
     [ 0, 0, 0, ..., 0, 0, 0], 
     [ 0, 0, 0, ..., 0, 0, 0], 
     [ 0, 0, 0, ..., 0, 0, 0]]]) 
Coordinates: 
    * lat  (lat) float32 75.0 72.5 70.0 67.5 65.0 62.5 60.0 57.5 55.0 52.5 ... 
    * lon  (lon) float32 200.0 202.5 205.0 207.5 210.0 212.5 215.0 217.5 ... 
    * time  (time) datetime64[ns] 2013-01-31 2013-02-28 2013-03-31 ... 
+0

Excellent( '霜')= air_day.air <0' ' air_day.frost.groupby( 'time.month')。 、 ありがとうございました!これは私がそれが見えるべきであると想像したものです! – TomTom101

関連する問題