Python-xarray单维度绑定多坐标及数据集合并方案咨询
xarray多参数同维度坐标设置与合并方案
核心逻辑
你不需要将c/d/e拆分为独立维度,直接将三者设置为绑定到c_d_e维度的非维度坐标即可。这类坐标仅和c_d_e维度的位置一一对应,不会扩展数据维度、也不会产生无意义的NaN填充,完全符合低存储占用的要求。
单数据集构造示例
import xarray as xr import numpy as np # 模拟原始数据参数 a_length = 10 b_length = 20 cde_length = 30 # c_d_e维度的长度,对应c、d、e各有30组一一对应的取值 x_data = np.random.rand(a_length, b_length, cde_length) # 各坐标取值数组,c/d/e数组长度必须和c_d_e维度长度一致 a_coord = np.arange(a_length) b_coord = np.arange(b_length) c_coord = np.random.rand(cde_length) d_coord = np.random.rand(cde_length) e_coord = np.random.rand(cde_length) # 构造目标数据集 ds = xr.Dataset( data_vars = {'x': (['a', 'b', 'c_d_e'], x_data)}, coords = { 'a': a_coord, 'b': b_coord, # 声明三个绑定到c_d_e维度的非维度坐标 'c': ('c_d_e', c_coord), 'd': ('c_d_e', d_coord), 'e': ('c_d_e', e_coord) } )
构造完成的数据集维度仍为['a', 'b', 'c_d_e'],同时拥有a/b/c/d/e五个可用坐标,完全符合你的预期结构。
多数据集合并操作
所有数据集按上述规则构造完成后,直接调用xr.concat沿目标维度拼接即可,非维度坐标会跟随绑定维度自动合并:
# 示例:沿a维度合并多个同结构数据集ds1、ds2、ds3 combined_ds = xr.concat([ds1, ds2, ds3], dim='a')
坐标使用说明
后续需要按c/d/e取值筛选、索引数据时,可直接调用xarray的标准索引方法:
# 示例:筛选c取值大于0.5的所有数据 filtered_ds = ds.where(ds.c > 0.5, drop=True)
内容的提问来源于stack exchange,提问作者ge0rg
相关产品推荐
相关产品推荐

