gpt4 book ai didi

python - 将 netcdf 文件中的所有变量和维度从 int/float 转换为 double

转载 作者:行者123 更新时间:2023-12-01 04:00:00 24 4
gpt4 key购买 nike

我有一个 netCDF 文件,其中包含以下内容。 NC转储:

netcdf nc_data {
dimensions:
lon = 1440 ;
bounds = 2 ;
lat = 720 ;
time = UNLIMITED ; // (6 currently)
variables:
double lon_bounds(lon, bounds) ;
double lat_bounds(lat, bounds) ;
int time(time) ;
time:units = "year as %Y.%f" ;
time:calendar = "proleptic_gregorian" ;
time:long_name = "time" ;
time:standard_name = "time" ;
time:axis = "T" ;
float lat(lat) ;
lat:units = "degrees_north" ;
lat:long_name = "latitude" ;
lat:standard_name = "latitude" ;
lat:axis = "Y" ;
lat:bounds = "lat_bounds" ;
float lon(lon) ;
lon:units = "degrees_east" ;
lon:long_name = "longitude" ;
lon:standard_name = "longitude" ;
lon:axis = "X" ;
lon:bounds = "lon_bounds" ;
float valf(time, lat, lon) ;
valf: standard_name = “area_fraction”
valf:missing_value = -9999.f ;
valf:_fillvalue = -9999.f ;
valf:long_name = "val fraction" ;
valf:units = "fraction of grid cell" ;
}

是否有一个 nco 命令可以将所有变量和维度从 int/float 转换为 double?

我发现了这个:

ncap2 -s 'valf=double(valf)' nc_data.nc nc_data.nc

但是,这一次仅适用于一个变量,而我的文件中有大约 30 个变量

最佳答案

ncap2 可以优雅地做到这一点,尽管它需要当前快照(很快就会变成 4.6.0)。请注意,自 NCO 版本 4.5.3 以来,您上面使用的命令不会更改输出文件中变量的类型,并且当前快照确实允许它工作。 (ncap2 的临时版本要求输出变量具有与输入不同的名称,以便更改其类型,例如 val_dbl=double(valf)

重要的是,ncap2 的当前快照可以理解变量列表。因此,您可以使用此脚本创建具有更改名称的某些变量的输出文件:

@all=get_vars_in();
*sz=@all.size();

for(idx=0;idx<sz;idx++){

@var_nm=sprint(@all(idx));

if( *@var_nm.type() == NC_INT || *@var_nm.type() == NC_FLOAT )
*@var_nm=*@var_nm.double();

}

不需要重命名变量。

关于python - 将 netcdf 文件中的所有变量和维度从 int/float 转换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com