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, 4 meses, 26 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 biblioteca xarray 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