python中基于另一个变量的netCDF子集

python中基于另一个变量的netCDF子集,python,netcdf,Python,Netcdf,我有一个netCDF文件,我想根据netCDF文件中的另一个变量替换一些数据。该文件可在以下位置获得: 并具有以下结构: dimensions: lat = 720; time = 3; lon = 1440; variables: float cntry_codes(lat=720, lon=1440); :_FillValue = 0.0f; // float float data(time=3, lat=720, lon=1440);

我有一个netCDF文件,我想根据netCDF文件中的另一个变量替换一些数据。该文件可在以下位置获得: 并具有以下结构:

  dimensions:
    lat = 720;
    time = 3;
    lon = 1440;
  variables:
    float cntry_codes(lat=720, lon=1440);
      :_FillValue = 0.0f; // float

float data(time=3, lat=720, lon=1440);
  :_FillValue = NaNf; // float
  :units = "%";

int time(time=3);

float longitude(lon=1440);

float latitude(lat=720);
我想将网格单元中的“数据”值(其中cntry_代码值为840)替换为新值0.8。我试着这样做:

import netCDF4
lat_inds = numpy.where(cntry_codes = 840.0)
lon_inds = numpy.where(cntry_codes = 840.0)
然而,这是行不通的。有更好的解决方案吗?

尝试以下方法:

import netCDF4 as nc

dataset = nc.Dataset('/path/to/data.nc', 'r+')

cntry = dataset.variables['cntry_codes'][:]
shape = dataset.variables['data'].shape

for i in range(shape[0]):
    data_i = dataset.variables['data'][i]
    data_i[cntry == 840.0] = 0.8
    dataset.variables['data'][i] = data_i

dataset.close()
现在,您的data.nc文件应该用新信息更新。告诉我是否有用


netCDF4 python库的文档是。

您提供的代码不起作用。首先,您应该使用
data=netCDF4.Dataset(…)
读取数据,然后访问所需的变量,
cntry\u code=data.variables['cntry\u code'][:]
,然后播放它们,
mask=cntry\u code[cntry\u code=840.0]
,最后,修改nc文件中
数据
变量所需的数据。谢谢@kikocorreoso,这是让我困惑的最后一步。即,如何基于屏蔽数组修改数据变量?