5

var我有一个 netCDF 文件,其中包含一个名为2001-01-01 到 2010-12-31的变量的每日数据。我想计算每月总和以var生成包含 12 个时间步长的 netCDF(一年中的每个月一个)。目前,我正在这样做:

import xarray as xr
hndl_fl = xr.open_dataset(path_file)

hndl_fl.resample('1MS', dim='time', how='sum')

但是,这会导致 netCDF 包含从 2001 年到 2010 年每个月的月度总和。我如何获得 12 个月的月平均值?

4

2 回答 2

5

评论:我正在寻找 12 个月的月平均值(从 2001 年到 2010 年的所有年份)。您的解决方案仅计算 1 年的月平均值

我的第一个输出从2001-012010-12开始,所以涵盖了所有年份。
你想再次获得resample120 个值吗?


我如何获得 12 个月的月平均值?

你必须决定你想要什么:
一年内每个月的平均值,每年产生 12 个值,10 年内最多 120 个值

1 年平均值,10 年内产生 10 个值

使用以下xarray.Dataset,date_range=10 年

date_range('2001-01-01', '2010-12-31', name='time')
<xarray.Dataset>
Dimensions:  (time: 3652)
Coordinates:
  * time     (time) datetime64[ns] 2001-01-01 2001-01-02 2001-01-03 ...
Data variables:
    data     (time) float64 16.0 18.0 15.0 12.0 23.0 9.0 7.0 18.0 23.0 23.0 ...

获取monthly_avr每个月的date_range('2001-01-01', '2010-12-31', name='time')

monthly_avr = ds.resample('1MS', dim='time', how='mean')

输出:

monthly_avr=<xarray.Dataset>
Dimensions:  (time: 120)
Coordinates:
  * time     (time) datetime64[ns] 2001-01-01 2001-02-01 2001-03-01 ...
Data variables:
    data     (time) float64 17.42 16.54 19.23 18.37 14.74 17.8 16.45 17.29 ...

获取 中的year_avr每一年date_range('2001-01-01', '2010-12-31', name='time')

year_avr = ds.resample('1AS', dim='time', how='mean')  

输出:

year_avr=<xarray.Dataset>
Dimensions:  (time: 10)
Coordinates:
  * time     (time) datetime64[ns] 2001-01-01 2002-01-01 2003-01-01 ...
Data variables:
    data     (time) float64 17.22 17.13 17.05 17.49 17.38 17.07 16.72 16.47 ...  

用 Python 测试:3.4.2 - xarray:0.9.1

于 2017-03-12T10:13:02.460 回答
3

任何一个

hndl_fl.resample('1MS', dim='time', how='mean')

或者

hndl_fl.groupby('time.month').mean('time')

应该做的伎俩,这取决于你到底想要什么。

于 2017-03-12T23:42:26.357 回答