- 积分
- 740
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2020-2-12
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 Choo-Choo 于 2021-2-7 00:03 编辑
分享一段用python合并nc文件的程序,如有错误或更好的方法欢迎指正~
数据来源:CMIP6(需要合并的变量为time和pr)
#导入需要的库包
import xarray as xr
import os
import numpy as np
#获取文件路径
paths=os.chdir(r'D:/sp/H')
list_path=os.listdir(os.getcwd())
#两个空的list,用在concat函数里
a=[]
b=[]
#批量读取文件
for paths in list_path:
f=xr.open_mfdataset(paths, chunks=None, concat_dim='_not_supplied',
#compat='override',
coords='different',
combine='by_coords', autoclose=None, parallel=False)
#转换时间格式
f=f.assign_coords(time=f.indexes['time'].to_datetimeindex())
#读取变量,如果数据过大可以索引,但索引后合成的nc文件无法再索引
lon=f['lon']
lat=f['lat']
time=f['time']
pr=f['pr']
#concat函数按维度合并
for t in time:
b.append(t)
t_al=xr.concat(b,dim='time')
for p in pr:
a.append(p)
pr_al=xr.concat(a,dim='time')
#写成dataarray
pr=xr.DataArray(data=pr_al,dims=('time','lat','lon'),
coords=dict(time=t_al,lat=lat,lon=lon))
#dataarray转化为dataset
ds=xr.Dataset({'pr':pr})
#输出成nc文件
ds.to_netcdf(r'D:/sp/H/high.nc')
|
|