Как вычислить новую переменную из существующих переменных в xarray? - PullRequest
1 голос
/ 28 марта 2019

У меня есть данные, которые состоят из измерений нескольких переменных во времени для нескольких субъектов. Он находится в трехмерном массиве xarray.DataArray, где первое измерение индексирует субъекты, второе измерение индексирует переменные, а третье измерение индексирует время. Как я могу эффективно добавить новую переменную, которая является функцией текущих переменных на каждом временном шаге? Например, скажем, у нас есть этот массив

import numpy as np
import xarray as xr

x = xr.DataArray(
  np.random.randn(2,3,4), 
  dims=("unit", "variable", "time"), 
  coords={"variable": list("ABC")}
)

Как я могу изменить x так, чтобы он имел форму (2,4,4), а новая переменная состояла из нормы переменных A, B, C на каждом временном шаге для каждого субъекта?

Edit:

Я нашел один способ сделать это:

norm = np.sqrt((x*x).sum('variable'))
tfmd = norm.assign_coords(variable='norm').expand_dims('variable', 1)
x = xr.concat((x, tfmd), dim='variable')

Есть ли более общий способ сделать первую строку? И есть ли способ укоротить вторые две строки?

...