使用python中的xarray获取每月气候学

2024-04-23 22:00:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个netCDF文件,其中包含一个名为var2001-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年,每个月的金额都是一个netCDF。如何计算12个月的月平均值?在


Tags: 文件数据importvaras时间netcdfopen
2条回答

或者

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

或者

^{pr2}$

你应该做到这一点,这取决于你到底想要什么。在

Comments: I am looking for monthly average for 12 months (for all years from 2001 to 2010). Your solution only computes monthly average for 1 year

我的第一个产出从2001-01年开始,一直持续到2010-12年,因此涵盖了所有年份。
是否要再次resample这些120值?在


How do i get the monthly average for 12 months?

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

1年平均值,10年内得出10个值

使用以下xarray.Dataset,日期范围=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 ...

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

^{pr2}$

输出:

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 ...

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

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

相关问题 更多 >