Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

332
Vistas
Cómo ordenar las coordenadas y variables de un xr.Dataset

Me gustaría ordenar las coordenadas y variables de un conjunto de Dataset xarray en orden alfabético. He intentado hacer esto usando ds.transpose(*sorted(ds.dims)) . Esto parece ordenar las coordenadas/dimensiones de cada DataArray en el Dataset , pero no las coordenadas del Dataset en sí.

Ejemplo:

 >>> ds = xr.Dataset( ... { ... 'z': (['c', 'a', 'b'], np.ones(shape=(2, 2, 2))), ... 'x': (['a', 'b', 'c'], np.zeros(shape=(2, 2, 2))), ... 'y': (['c'], [0, 1]), ... }, ... coords={'c': [30, 31], 'a': [10, 11], 'b': [20, 21]} ... ) >>> ds.transpose('a', 'b', 'c') <xarray.Dataset> Dimensions: (c: 2, a: 2, b: 2) Coordinates: * c (c) int64 30 31 * a (a) int64 10 11 * b (b) int64 20 21 Data variables: z (a, b, c) float64 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 x (a, b, c) float64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 y (c) int64 0 1

El comportamiento esperado es que las coordenadas y dimensiones de todo el xr.Dataset se ordenen como 'a', 'b', 'c' . Sin embargo, puede ver que solo las dimensiones de las variables de datos están en este orden.

¿Cómo puedo ordenar las coordenadas y las variables de un conjunto de datos, no solo las dimensiones de la matriz?

Cualquier ayuda es muy apreciada, ¡gracias!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Revisa estos:

 ds = xr.Dataset( data_vars={ 'z': (['c', 'a', 'b'], np.ones(shape=(2, 2, 2))), 'x': (['a', 'b', 'c'], np.zeros(shape=(2, 2, 2))), 'y': (['c'], [0, 1]), }, coords={'c': [30, 31], 'a': [10, 11], 'b': [20, 21]} ) df = ds.to_dataframe() df = df.reindex(sorted(df.columns), axis=1) print(df.to_xarray()) # <xarray.Dataset> # Dimensions: (a: 2, b: 2, c: 2) # Coordinates: # * a (a) int64 10 11 # * b (b) int64 20 21 # * c (c) int64 30 31 # Data variables: # x (a, b, c) float64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 # y (a, b, c) int32 0 1 0 1 0 1 0 1 # z (a, b, c) float64 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
over 4 years ago · Santiago Trujillo Denunciar

0

Puede hacer esto en xarray con xr.Dataset.reindex_like y xr.Dataset.reindex . El primero es útil si tiene otro objeto con el que desea hacer coincidir.

 ds = xr.Dataset( data_vars={ 'z': (['c', 'a', 'b'], np.ones(shape=(2, 2, 2))), 'x': (['a', 'b', 'c'], np.zeros(shape=(2, 2, 2))), 'y': (['c'], [0, 1]), }, coords={'c': [30, 31], 'a': [10, 11], 'b': [20, 21]} ) current_indexes = ds.indexes desired_order = ['a', 'b', 'c'] reordered_indexes = {index_name: current_indexes[index_name] for index_name in desired_order} reordered_ds = ds.reindex(reordered_indexes)
 >>> ds <xarray.Dataset> Dimensions: (c: 2, a: 2, b: 2) Coordinates: * c (c) int64 30 31 * a (a) int64 10 11 * b (b) int64 20 21 Data variables: z (c, a, b) float64 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 x (a, b, c) float64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 y (c) int64 0 1 >>> reordered_ds <xarray.Dataset> Dimensions: (a: 2, b: 2, c: 2) Coordinates: * a (a) int64 10 11 * b (b) int64 20 21 * c (c) int64 30 31 Data variables: z (c, a, b) float64 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 x (a, b, c) float64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 y (c) int64 0 1
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda