Xarray中+=原地操作报错,求替代方案及对齐方法
Xarray中替代+=的等价操作方案
你遇到的报错是因为Xarray的原地操作(如+=)不支持自动维度对齐,当累加的数组坐标/维度不匹配时就会触发这个错误。替代方案是先通过xr.align对齐数组,再执行非原地的加法赋值。
修改后的代码示例
import glob import xarray as xr Time = [] a_foot = None for file in glob.glob('*.nc'): data = xr.open_dataset(file) foot = data['foot'] if a_foot is None: a_foot = foot.copy() # 复制避免原数据集修改影响累加结果 else: # 对齐两个数组的坐标,根据需求选择join参数 aligned_a, aligned_foot = xr.align(a_foot, foot, join='inner') a_foot = aligned_a + aligned_foot Time.append(data['time'].values) data.close()
关键说明
xr.align会统一两个数组的坐标体系,确保加法操作能正常执行- 不要使用原地操作(如
+=),Xarray的原地操作不支持自动对齐逻辑 join参数可按需调整:inner:仅保留两个数组共有的坐标(交集)outer:保留所有坐标(并集),缺失位置填充NaNleft:保留已有累加数组的坐标,新数组缺失的位置填充NaNright:保留新读取数组的坐标,已有累加数组缺失的位置填充NaN
内容的提问来源于stack exchange,提问作者Nafb
相关产品推荐
相关产品推荐

