xarray含0长度维度调用squeeze方法报IndexError如何解决?
报错原因
xarray.DataArray.squeeze() 和 numpy.squeeze 的设计逻辑是仅删除长度为1的冗余维度,你当前要处理的season维度长度为0,不符合squeeze的适用规则,因此会抛出索引越界错误。
解决方法
直接使用xarray自带的drop_dims()方法即可删除指定维度,不受维度长度限制:
newxarray = myxarray.drop_dims(dim='season')
执行后得到的newxarray就会是形状为(261, 341)的DataArray对象,原有的后两维坐标、属性信息都会保留。
补充说明
如果执行完上述操作后发现数组无有效数据,需要检查你此前对season维度的筛选/切片逻辑,确认是否在前期处理中误将该维度的所有值都过滤掉了,导致维度长度变为0。
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

