python - 如何在 python 中将变量从一个 netcdf 文件添加到另一个 netcdf 文件?
问题描述
我正在使用来自 ECMWF 的 ERA-Interim 数据,其中我需要的变量分布在多个文件中。如何将一个文件中的变量添加到现有文件中,以便最终拥有一个包含我需要的所有变量的文件?
到目前为止,我已经尝试了 append()、concatenate() 和 merge 函数,但没有任何效果。
p_data = anapath1+'/'+yyyy+'/'+mm+'/'+'P'+date
b_data = anapath1+'/'+yyyy+'/'+mm+'/'+'B'+date
g_data = anapath1+'/'+yyyy+'/'+mm+'/'+'G'+date
#Open/Read netCDF files
inpcst = xr.open_dataset(cstfile)
inp1 = xr.open_dataset(p_data)
inp2 = xr.open_dataset(b_data)
inp3 = xr.open_dataset(g_data)
这些是我正在使用的一些数据文件。我将它们加载到python中。
cdo merge inp1 inp2 inp
我尝试使用此方法合并两个数据文件,但出现以下错误:
File "<ipython-input-12-667af80d1ae4>", line 49
cdo merge inp1 inp2 inp
^
SyntaxError: invalid syntax
我以前在这里看到过和这里完全一样的代码,所以我不知道为什么会出现语法错误。在 Matlab 中这很容易,因为您可以这样做:
inp = inp1
inp.a = inp2.a
inp.b = inp3.b
其中 a 和 b 是我要添加到 inp 的 inp2 和 inp3 的变量
我只是想将某些变量从一个文件复制到另一个
解决方案
欢迎来到 SO,如果您是 NETCDF 处理的新手,我强烈建议您使用 CDO 和 NCO 的命令行运算符来执行此类任务...例如,您可以从文件中选择特定变量并将其放入自己的像这样的文件:
cdo selvar,varname in.nc out.nc
然后您可以将文件组合在一起以创建一个组合文件,如下所示:
cdo cat file1.nc file2.nc cat_file.nc
然后在两个包中都有一大堆运算符来执行时间平均值、平均值、最大值、百分位数等......
在此处查看文档:https ://code.mpimet.mpg.de/projects/cdo/wiki/Cdo#Documentation
如果您使用的是 linux ubuntu 或 mint,您可以简单地安装它:
cdo apt-get install cdo
ncrcat 还可以将 netcdf 文件合并在一起,详见此处:https ://linux.die.net/man/1/ncrcat
推荐阅读
- laravel - axios帖子上的403(禁止)。拉拉维尔 5.7
- tableau-api - 如何在 Tableau Desktop (9.1) 中关闭计划的服务器发布?
- bash - Bash:将数组中的每个项目转换为带有标志的命令参数
- python - Gremlin Python - 连接到多节点 JanusGraph 集群
- python-3.x - 在 Google App Engine 上按计划运行 python 脚本
- java - 如何通过某种类型的变量使用流()求和
- java - JWT.decode(token) 静默失败
- c - 在 void 函数中重新分配
- javascript - 如何使用 React 滚动到 div onClick?
- apache - 如何将所有网址重定向到单个网页?