Python:使用netCDF4替换netcdf文件中的值

2024-04-20 08:03:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个netcdf文件,它有几个值<;0。我想用一个值(比如-1)替换它们。如何使用netCDF4实现这一点?我正在读这样的文件:

import netCDF4

dset      = netCDF4.dataset('test.nc')
dset[dset.variables['var'] < 0] = -1

Tags: 文件testimportltvarnetcdfvariablesdataset
3条回答

我知道OP需要一个python解决方案,但是如果有人只想执行这个任务,也可以通过命令行使用nco快速完成:

ncap2 -s 'where(x<0.) x=-1;' input.nc -O output.nc

根据这篇文章:setting values below a threshold to the threshold in a netcdf file

对我来说,前面的答案行不通,我用以下方法解决了它:

dset = netCDF4.Dataset('test.nc','r+')
dset.variables['var'][:]
... your changes ...
dset.close() 

如果要将数据保存在netCDF变量对象中,应该可以:

import netCDF4

dset = netCDF4.Dataset('test.nc')

dset['var'][:][dset['var'][:] < 0] = -1

dset.close() # if you want to write the variable back to disk

如果不想写回磁盘,可以直接获取numpy数组并对其进行切片/分配:

data = dset['sea_ice_cover'][:]  # data is a numpy array
data[data < 0] = -1

相关问题 更多 >