为切片后的xarray.DataArray添加新坐标报错,求排查解决
解决xarray assign_coords时的"无法添加带有新维度的坐标"错误
嘿,我来帮你搞定这个问题~你遇到的这个ValueError,核心原因其实很简单:xarray不知道你传入的np.zeros(5)该和哪个现有维度绑定。
当你直接传一个一维数组给assign_coords时,xarray默认会认为你要创建一个全新的维度,但你的subset已经有samples和features两个维度了,而你实际是想给现有的samples维度新增一个坐标——所以必须明确告诉xarray这个数组对应的维度是谁。
这里有两种简单的解决方法:
方法一:用元组指定坐标关联的维度
直接在赋值时用(维度名, 数组)的元组格式,明确告诉xarray这个坐标属于samples维度:
# 注意要重新赋值给subset,因为assign_coords默认返回新对象 subset = subset.assign_coords(alternate_sample_weights=('samples', np.zeros(5)))
方法二:将数组包装为xarray.DataArray
把你的权重数组先转成带有明确维度的DataArray,再传入assign_coords:
import xarray as xr # 创建带有维度信息的坐标数组 alt_weights = xr.DataArray(np.zeros(5), dims=['samples']) # 赋值并更新subset subset = subset.assign_coords(alternate_sample_weights=alt_weights)
两种方法都能解决问题,你可以根据自己的习惯选择。执行完后,你可以通过subset.coords查看,就能看到alternate_sample_weights已经成功绑定到samples维度上啦~
内容的提问来源于stack exchange,提问作者adrin
相关产品推荐
相关产品推荐

