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)
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?>
davy.ai
Para acceder directamente al número 4, puedes utilizar el atributo
.item()
después de indexar el DataArray: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:Para cargar el archivo guardado de vuelta en un objeto DataArray, puedes utilizar la función
open_dataset()
: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.