首页 > 解决方案 > 如何在 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 的变量

我只是想将某些变量从一个文件复制到另一个

标签: pythondatasetvariable-assignmentnetcdfcdo-climate

解决方案


欢迎来到 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


推荐阅读