¿Cómo puedo expandir una variable de datos a lo largo de una dimensión de tiempo utilizando xarray?
Tengo un DataSet ds_object
que se ve así:
ds_object
<xarray.dataset>
Dimensions: (time: 14392)
Coordinates:
* time (time) datetime64[ns] 2021-08-28T00:00:02.14...
Data variables:
variable .......
Donde “variable” es:
<xarray.dataarray 'variable'="" ()="">
array(0., dtype=float32)
Attributes:
units: count
Estoy tratando de expandir la variable “variable” unidimensionalmente en función del tiempo. En esencia, cambiar ‘variable’ de un array de 0 dimensiones a un array de 1 dimensión, con forma (1, 14392). La longitud de variable
será entonces la misma que la de ‘time’, pero con el valor singular de variable
repetido 14392 veces.
Pude hacer esto:
variable = np.full((1, len(time)), variable)
Esto le da a variable
la forma que necesito, pero por alguna razón se convierte en una variable de coordenadas para ds_object
:
ds_object = ds_object.assign(variable_new=(variable[0]))
print(ds_object)
<xarray.dataset>
Dimensions: (time: 13164, variable_new: 13164)
Coordinates:
* time (time) datetime64[ns] 2021-08-28T00:00:02.14...
* variable_new (variable_new) float32 0.0 0.0 ... 0.0
Data variables: (12/28)
¿Por qué ocurre esto? ¿Cómo puedo agregar variable_new
a ds_object
como una nueva variable de datos?</xarray.dataset></xarray.dataarray></xarray.dataset>
davy.ai
Esto ocurre porque al utilizar
ds_object.assign()
, cualquier arreglo de numpy se interpreta de forma predeterminada como variables de coordenadas. Para agregarvariable_new
como una variable de datos en su lugar, puedes utilizar el métodoxr.DataArray()
para crear un nuevo arreglo de datos de xarray y luego asignarlo ads_object
utilizando el mismo nombre de variable:Esto debería darte
ds_object
convariable_new
agregada como una nueva variable de datos, con la forma correcta de(14392,)
.