将值设置为低于阈值的netcdf文件中的阈值

时间:2016-05-11 13:34:00

标签: bash netcdf nco cdo-climate

我想在netcdf文件中将所有低于常量c的值设置为c本身:file.nc

使用气候数据操作员(CDO)的解决方案

cdo mul -gec,$c file.nc file.nc t1.nc
cdo add -mulc,$c -ltc,$c file.nc t1.nc output.nc
rm -f t1.nc

但有更简洁/更短的方法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用NCO's ncap2轻松完成此操作。

例如,在x中将file.nc的所有值设置为100到100以下,并在file2.nc中输出:

>>> ncap2 -s 'where(x<100.) x=100;' file.nc -O file2.nc 

答案 1 :(得分:3)

ncap2的剪辑操作符最简洁:

ncap2 -s 'x=x>>100' in.nc out.nc

答案 2 :(得分:0)

将Python与NumPy和netCDF4一起使用,您可以执行以下操作:

import numpy as np
from netCDF4 import Dataset

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

data = dataset.variables['data_variable_name'][:]

threshold = 100 # or whatever your constant c is

# np.where(condition, value if true, value if false)
new_data = np.where(data < threshold, threshold, data)

# Write your new data back to the NetCDF file
dataset.variables['data_variable_name'][:] = new_data[:]

dataset.close()
祝你好运!