如何使用xarray沿新维度拼接数组并保留原time维度
解决方案
要在xarray中实现保留time维度为12的4维数组拼接,核心是避免xarray自动合并同名的time维度,而是将每个年份对应的数组作为新维度years的独立元素堆叠:
方法1:先扩展维度再拼接
先为每个3维数组添加一个长度为1的years维度,再沿着years维度拼接:
import numpy as np import xarray as xr years = np.arange(1980, 2000) # 为每个数组添加years维度 arrays_with_year = [reshape_shum[y].expand_dims(years=[y]) for y in years] # 拼接得到4维数组 stack = xr.concat(arrays_with_year, dim='years')
方法2:使用xr.combine_nested直接堆叠
xr.combine_nested可以直接将数组列表按指定的新维度堆叠,无需手动扩展维度:
import numpy as np import xarray as xr years = np.arange(1980, 2000) stack = xr.combine_nested([reshape_shum[y] for y in years], concat_dim=['years'])
两种方法最终都会得到维度为<xarray.DataArray 'q' (years: 20, time: 12, latitude: 129, longitude: 121)>的数组,和np.stack的效果一致,同时保留xarray的坐标与属性信息。
内容的提问来源于stack exchange,提问作者Reqbisha
相关产品推荐
相关产品推荐

