У меня есть данные, которые состоят из измерений нескольких переменных во времени для нескольких субъектов. Он находится в трехмерном массиве 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')
Есть ли более общий способ сделать первую строку? И есть ли способ укоротить вторые две строки?