- 如题,我的数据是每个月份一个文件,总共有72年*12个月的文件量,但是这读起来也太累了,希望把它们按时间维度合并成一个文件,希望能够做到由A—B(我已经做到了嘿嘿)
A
B
话不多说,小熊笔记如下
1.配置包
不用多说了,都懂
2.将所有文件的路径及文件名写入列表中
path='/home/***/directory_name/' #文件夹路径
file=[]#新建列表
for year in range(1950,2022):
for month in range(1,13):
fn=os.path.join(path,'daily_mean_u_component_of_wind'+
'%04.0f'%year+'%02.0f'%month+'.nc')# 将路径与有规律的文件名拼接起来
file.append(fn) #将文本写入列表
得到所有完整路径的文件列表,file中内容如下图所示
3.新建列表,提取文件列表中每一个文件的变量的xarray.DataArray,并append到新的列表中
file_new=[]
for i in range(len(file)):
u=xr.open_dataset(file[i])['u']
file_new.append((u))
file_new内容如下
4.最后一步,按时间维合并,并导出新的nc文件
new_file=xr.concat(file_new,dim='time')#合并
new_file.to_netcdf('/home/sss/users/***/50_021.nc')#输出合并后的nc文件
运行后发现时间维变了,合并成功
【补充】xarray.concat()官方介绍如下:
xarray.concat
例外,官网也给出了其他的合并方式
1、有关沿单个维度组合数据集或数据数组的信息,使用 concatenate。
2、有关合并具有不同变量的数据集,使用 merge。
3、 有关合并具有不同索引或缺失值的数据集或数据数组的信息,使用 combine。
4、有关沿多个维度组合数据集或数据数组的信息,使用 combining.multi。