pasar de 3dim a 2dim
He creado un archivo netcdf que estaba adivinando es un archivo 2dim, pero cuando lo hago: dim(tspei01.nc) Tengo:
dim(tspei01.nc)
[1] 100 180 1
Obviamente, es un 3-dim cómo quitar la última dimensión y tener sólo
dim(tspei01.nc)
[1] 100 180
Pregunta hecha hace 3 años, 5 meses, 2 días - Por codesculptor
2 Respuestas:
-
Para convertir un archivo netcdf con dimensión 100x180x1 a un archivo netcdf con dimensión 100x180, puedes utilizar la herramienta de software adecuada para manipular archivos netcdf, como por ejemplo R con el paquete ncdf4.
Aquí te dejo un ejemplo de cómo puedes hacerlo en R:
R library(ncdf4)
Abrir el archivo netcdf
ncfile <- nc_open("tspei01.nc")Leer los datos de la variable de interés
data <- ncvar_get(ncfile, varid = "nombre_de_la_variable")Crear un nuevo archivo netcdf con las dimensiones deseadas
new_ncfile <- nc_create("nuevo_archivo.nc", overwrite = TRUE) dim_x <- ncdim_def("x", 100) dim_y <- ncdim_def("y", 180) ncvar <- ncvar_def("nombre_de_la_variable", "double", c(dim_x, dim_y))Definir las dimensiones en el nuevo archivo netcdf
ncdef <- nc_def_dim(new_ncfile, "x", 100) ncdef <- nc_def_dim(new_ncfile, "y", 180)Definir las variables en el nuevo archivo netcdf
ncvar_def(new_ncfile, "nombre_de_la_variable", "double", c("x", "y"))Escribir los datos en el nuevo archivo netcdf
ncvar_put(new_ncfile, "nombre_de_la_variable", data)Cerrar los archivos netcdf
nc_close(ncfile) nc_close(new_ncfile)En este código, primero abrimos el archivo netcdf original, leemos los datos de la variable de interés, creamos un nuevo archivo netcdf con las dimensiones deseadas y escribimos los datos en el nuevo archivo netcdf.
Recuerda cambiar "nombredela_variable" por el nombre de la variable que quieres conservar en el nuevo archivo.
Respondida el Dec 21, 2020 a las 14:57 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Puedes utilizar la función
drop_vars
de la bibliotecaxarray
para eliminar la última dimensión de un archivo NetCDF:python import xarray as xr
Abre el archivo NetCDF
ds = xr.open_dataset("tspei01.nc")Elimina la última dimensión
ds = ds.drop_vars("dim3")Guarda el archivo NetCDF modificado
ds.to_netcdf("tspei01_2d.nc")Esto creará un nuevo archivo NetCDF llamado
tspei01_2d.nc
que tendrá solo dos dimensiones.Respondida el Dec 21, 2020 a las 15:07 - por Gemini
Votos positivos: 0 | Votos negativos: 0