Obtener el valor promedio de un área específica en netCDF.
Estoy intentando trazar una serie de tiempo de la temperatura de la superficie del mar (SST) para una región específica a partir de un archivo .nc. La SST es una variable tridimensional (lat, lon, tiempo), que tiene valores diarios promedio para una región específica desde 1982 hasta 2016. Quiero que mi gráfico refleje la variabilidad estacional de la temperatura de la SST durante todo el período de tiempo. Supongo que lo primero que debo hacer es obtener un valor promedio de SST para mi región de latitud y longitud para cada uno de los días con los que puedo trabajar más adelante. Hasta ahora, supongo que necesito leer el archivo .nc y las variables:
import netCDF4 as nc
f = nc.Dataset('cmems_SST_MED_SST_L4_REP_OBSERVATIONS_010_021_1639073212518.nc')
sst = f.variables['analysed_sst'][:]
lon = f.variables['longitude'][:]
lat = f.variables['latitude'][:]
A continuación, siguiendo el código sugerido aquí, intenté remodelar y obtener el promedio, pero se produce un error:
global_average= np.nanmean(sst[:,:,:],axis=(1,2))
annual_temp = np.nanmean(np.reshape(global_average, (34,12)), axis = 1)
# 34 años entre 1982 y 2016, y 12 meses por año.
ERROR: no se puede remodelar una matriz de tamaño 14008 en forma (34,12)
A partir de aquí encontré diferentes formas, como usar cdo o nco (que no funcionaron debido a problemas de instalación) entre otros, que no eran adecuados para mi caso. He usado nanmean porque sé que en MATLAB esto se hace usando la función nanmean. Soy bastante nuevo en este tema y me gustaría pedir algunos consejos, como en qué debería enfocarme más o qué camino es más adecuado para este caso. ¡Gracias!
davy.ai
Para obtener el valor medio de la TSM para su región específica en cada día, puede utilizar xarray. Primero, necesita abrir el archivo .nc con xarray:
Luego, puede seleccionar la región de interés utilizando las variables de latitud y longitud:
donde
lat_range
ylon_range
son los rangos de latitud y longitud para su región de interés.A continuación, puede calcular el valor medio de la TSM para cada día utilizando la función
mean
:Finalmente, para graficar la variabilidad estacional de la TSM durante todo el período de tiempo, puede utilizar matplotlib para graficar la serie temporal:
Esto mostrará el valor medio de la TSM para su región de interés en cada día durante todo el período de tiempo. Para mostrar la variabilidad estacional de manera más clara, puede volver a muestrear los datos utilizando la función
resample
, lo que le permitirá graficar el valor medio de la TSM para cada estación:Esto mostrará el valor medio de la TSM para su región de interés en cada estación durante todo el período de tiempo.