如何将每日转换为每月netcdf文件

时间:2014-10-07 16:25:37

标签: python netcdf nco cdo-climate

我已经以netcdf文件的形式下载了气候模型输出,其中一个变量(pr)用于整个世界,每日时间步长。我的最终目标是为欧洲提供月度数据。

我以前从未使用过netcdf文件,而我能找到的netcdf的所有特定软件似乎都不适用于Windows。因为我在R中编程,我尝试使用ncdf4包但遇到内存大小问题(我的文件大约是2Gb)...我现在正在尝试python中的netCDF4模块(我第一次使用python - 所以对我来说很容易)。

我已设法安装所有内容并在线找到一些代码来导入数据集:

nc_fid = Dataset(nc_f, 'r')  
# Extract data from NetCDF file
lats = nc_fid.variables['lat'][:]
lons = nc_fid.variables['lon'][:]
time = nc_fid.variables['time'][:]
pp  = nc_fid.variables['pr'][:]  

然而,我找到的所有教程都是关于如何制作netcdf文件......我不知道如何将每日降雨量(变量pr)汇总到每月。另外,我在不同的文件中有不同类型的日历,但我甚至不知道如何访问这些信息:

time.calendar
AttributeError: 'numpy.ndarray' object has no attribute 'calendar'

请帮助,我不想学习Linux,所以我可以整理一些数据:(

2 个答案:

答案 0 :(得分:2)

为什么不完全避免编程并使用提供 ncrcat 命令的NCO,这样就可以聚合数据:

ncrcat day*.nc month.nc

瞧。查看更多 ncrcat 示例here

已添加20160628:如果您想要按月平均值而不是一个月的时间序列,则只能使用 ncra 而不是 ncrcat 使用相同的命令。手册解释了这样的事情。

答案 1 :(得分:1)

如果您有每日时间步,并且您想计算月平均值,那么您可以

cdo monmean input_yyyy.nc output_yyyy.nc

听起来好像你有几个这样的文件,所以你需要将它们与

合并
cdo mergetime file_*.nc timeseries.nc 

其中*是多年来的通配符。