Добавление измерения, координат и атрибутов в dataArray

Я работаю над функцией, которая принимает один xarray.DataArraysfc_p и intvert_res (где первый представляет поле давления на поверхности, а второй - несколько вертикальных уровней), которая вычисляет давление на всех вертикальных уровнях, добавляет координаты, размеры и атрибуты. и выводит xarray.DataArraypressure.

Вычисление работает нормально, но моя проблема в следующем:
Пример для sfc_p может быть таким:

<xarray.DataArray 'sp' (time: 1, ens: 51, lat: 66, lon: 131)>
dask.array<shape=(1, 51, 66, 131), dtype=float32, chunksize=(1, 1, 66, 131)>
Coordinates:                                                                               
  * lon      (lon) float32 -100.0 -99.0 -98.0 -97.0 -96.0 -95.0 -94.0 -93.0 ...            
  * lat      (lat) float32 85.0 84.0 83.0 82.0 81.0 80.0 79.0 78.0 77.0 76.0 ...           
  * ens      (ens) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...             
  * time     (time) datetime64[ns] 2016-11-02T12:00:00                                     
Attributes:                                                                                
    units:          Pa                                                                     
    long_name:      Surface pressure                                                       
    standard_name:  surface_air_pressure                                                   
    cf_short_name:  sp                                                                     
    short_name:     sp                                                                     
    grid_type:      regular_ll   <xarray.DataArray 'sp' (time: 1, ens: 51, lat: 66, lon: 131)>

Теперь я хочу, чтобы выходной массив взял на себя большинство этих свойств с дополнительным измерением (после time и ensemble) и скоординировал hybrid, который просто range(1, vert_res + 1), и чтобы некоторые атрибуты были изменены, например

<xarray.DataArray 'sp' (time: 1, ens: 51, hybrid:137, lat: 66, lon: 131)>
dask.array<shape=(1, 51, 137, 66, 131), dtype=float32, chunksize=(1, 1, 137, 66, 131)>
Coordinates:                                                                               
  * lon      (lon) float32 -100.0 -99.0 -98.0 -97.0 -96.0 -95.0 -94.0 -93.0 ...            
  * lat      (lat) float32 85.0 84.0 83.0 82.0 81.0 80.0 79.0 78.0 77.0 76.0 ...    
  * hybrid   (hybrid) int32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...       
  * ens      (ens) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...             
  * time     (time) datetime64[ns] 2016-11-02T12:00:00                                     
Attributes:                                                                                
    units:          Pa                                                                     
    long_name:      modified                                                       
    standard_name:  modified                                                  
    cf_short_name:  modified                                                                    
    short_name:     modified                                                                    
    grid_type:      modified   

В настоящее время я вычисляю np.ndarray pressureVals (с правильной выходной формой) для значений, а затем инициализирую свой выходной xarray.DataArray с помощью this.
Но даже после нескольких часов чтения документации xArray я не нашел способа выполнить эту простую задачу добавления информации и метаданных, и я думаю, что мне не хватает чего-то совершенно простого. Может ли кто-нибудь указать мне правильное направление?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 929
1

Ответы 1

Чтобы изменить атрибуты, это da.attrs['long_name'] = 'new_long_name'

Возможно, вы сможете использовать http://xarray.pydata.org/en/stable/generated/xarray.DataArray.expand_dims.html, чтобы добавить измерение, посмотрите также numpy doc https://docs.scipy.org/doc/numpy/reference/generated/numpy.expand_dims.html

Другие вопросы по теме