Te sugerimos que revises esta respuesta en un ambiente controlado antes de pasarlo a producción, saludos.
Solución:
Si desea mantener los datos en el objeto variable netCDF, esto debería funcionar:
import netCDF4
dset = netCDF4.Dataset('test.nc', 'r+')
dset['var'][:][dset['var'][:] < 0] = -1
dset.close() # if you want to write the variable back to disk
Si no desea volver a escribir en el disco, continúe y obtenga el numpy array y cortar/asignarle:
data = dset['sea_ice_cover'][:] # data is a numpy array
data[data < 0] = -1
A mi no me funciona la respuesta anterior, lo resolvi con:
dset = netCDF4.Dataset('test.nc','r+')
dset.variables['var'][:]
... your changes ...
dset.close()
Solución 1: Matriz de Python
Esta solución usa xarray para leer y escribir el archivo netcdf y la función del paquete donde para restablecer condicionalmente los valores.
import xarray as xr
ds=xr.open_dataset('test.nc')
ds['var']=xr.where((ds['var']<0),-1,ds['var'])
ds.to_netcdf('modified_test.nc') # rewrite to netcdf
Soln 2: NCO desde la línea de comandos
Sé que el OP quiere una solución de python, pero en caso de que alguien quiera realizar esta tarea solo rápidamente desde la línea de comandos, también hay una forma de hacerlo con nco:
ncap2 -s 'where(x<0.) x=-1;' input.nc -O output.nc
según esta publicación: establecer valores por debajo de un umbral para el umbral en un archivo netcdf
Si conservas alguna perplejidad o forma de regenerar nuestro crónica te inspiramos realizar una crónica y con mucho gusto lo observaremos.