es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

xarray.DataArray cómo obtener un solo elemento

Quiero crear una tabla tridimensional que contenga números. Para datos bidimensionales, simplemente usaría un archivo csv o un pandas.DataFrame, pero esto resultó no ser tan fácil de usar para tres dimensiones. Decidí usar xarray. Si piensas que hay soluciones más fáciles, siéntete libre de decírmelo: solo quiero crear el arreglo, guardarlo en un archivo y leerlo posteriormente. Cada columna no tendrá más de 100 elementos.

Creo el arreglo (y accedo a él) usando

python
import numpy as np
import xarray as xr
da = xr.DataArray(
np.ones((4,4,4), dtype=int),
[
(“x-col”, [‘a’,’b’,’c’,’d’]),
(“y-col”, [‘A’,’B’,’C’,’D’]),
(“z-col”, [1,2,3,4])
]
)
da.loc[‘a’,’C’,2] = 4
da

que da como resultado

array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 4, 1, 1],
        [1, 1, 1, 1]],

   [[1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1]],

   [[1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1]],

   [[1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1]]])

Coordenadas:
x-col (x-col) <u1 ‘c’
z-col () int32 2

atributos: (0)


¿existe alguna forma de obtener el número 4 sin el envoltorio? además, ¿puedes proponer un método elegante para guardar el dataarray en un archivo para poder usarlo más tarde? 'c'="" z-col="" ()="" int32="" 2="" atributos:="" (0)="" ```="" ¿existe="" alguna="" forma="" de="" obtener="" el="" número="" 4="" sin="" el="" envoltorio?="" además,="" ¿puedes="" proponer="" un="" método="" elegante="" para="" guardar="" el="" dataarray="" en="" un="" archivo="" para="" poder="" usarlo="" más=""></u1 'c' z-col () int32 2 atributos: (0)

¿existe alguna forma de obtener el número 4 sin el envoltorio?

además, ¿puedes proponer un método elegante para guardar el dataarray en un archivo para poder usarlo más tarde?>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder directamente al número 4, puedes utilizar el atributo .item() después de indexar el DataArray:

    da.loc['a','C',2].item()
    

    lo cual retornará 4.

    Para guardar el DataArray en disco, puedes utilizar el método to_netcdf(). Por ejemplo, para guardarlo como un archivo NetCDF:

    da.to_netcdf('my_array.nc')
    

    Para cargar el archivo guardado de vuelta en un objeto DataArray, puedes utilizar la función open_dataset():

    loaded_da = xr.open_dataset('my_array.nc')[da.name]
    

    Esto cargará el DataArray guardado desde el archivo NetCDF en la variable loaded_da. Nota que utilizamos [da.name] para extraer el objeto DataArray del dataset abierto.

Comments are closed.