jmi*_*loy 7 python python-xarray
我需要为a添加维度DataArray,在新维度上填充值.这是原始数组.
a_size = 10
a_coords = np.linspace(0, 1, a_size)
b_size = 5
b_coords = np.linspace(0, 1, b_size)
# original 1-dimensional array
x = xr.DataArray(
np.random.random(a_size),
coords=[('a', a coords)])
Run Code Online (Sandbox Code Playgroud)
我想我可以创建一个带有新维度的空DataArray并复制现有数据.
y = xr.DataArray(
np.empty((b_size, a_size),
coords=([('b', b_coords), ('a', a_coords)])
y[:] = x
Run Code Online (Sandbox Code Playgroud)
一个更好的想法可能是使用concat.我花了一段时间才弄清楚如何为concat维度指定dims和coords,并且这些选项都不是很好.有什么我想念的东西可以使这个版本更干净吗?
# specify the dimension name, then set the coordinates
y = xr.concat([x for _ in b_coords], 'b')
y['b'] = b_coords
# specify the coordinates, then rename the dimension
y = xr.concat([x for _ in b_coords], b_coords)
y.rename({'concat_dim': 'b'})
# use a DataArray as the concat dimension
y = xr.concat(
[x for _ in b_coords],
xr.DataArray(b_coords, name='b', dims=['b']))
Run Code Online (Sandbox Code Playgroud)
不过,有没有比上述两个选项更好的方法呢?
Q-m*_*man 14
如果DA您的数据数组的长度为DimLen,您现在可以使用expand_dims:
DA.expand_dims({'NewDim':DimLen})
Run Code Online (Sandbox Code Playgroud)