如何从xarray中的现有变量计算新变量?

时间:2019-03-28 00:50:28

标签: python arrays numpy multidimensional-array python-xarray

我有一些数据,这些数据包含多个主题随时间变化的多个变量的测量值。它位于3d 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的范数组成?

编辑:

我想出了一种方法:

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

是否有更通用的方法来进行第一行?有没有办法缩短后两行?

0 个答案:

没有答案