Numpy报错too many indices for array中indexed含义及解决问询
报错术语解释
报错中的 indexed 意为「被索引」,整段报错的完整含义是:当前操作的数组是1维结构,但你传入了3个维度的索引参数尝试取值,维度不匹配导致报错。
你这段代码的报错触发点为xco2[0,:,:]:你写了3个维度的索引(第一个维度取索引0,第二、第三个维度取全部值),但实际xco2数组只有1个维度,无法支持3维索引操作。
排查解决步骤
- 第一步先打印确认
xco2的实际维度和形状,执行代码:
正常你写print('维度:', xco2.ndim, '形状:', xco2.shape)[0,:,:]说明你预期xco2是3维数组,现在实际是1维,大概率是数据加载阶段出了问题,比如读取netCDF等格式数据时变量名写错、或者意外做了降维操作。 - 第二步如果
xco2的实际形状和你的预期不符,回溯数据读取、赋值的代码逻辑,确认是否把其他1维数组错赋值给了xco2变量。 - 第三步如果确认
xco2本身就是1维数组,根据你的业务需求调整逻辑:如果要给pcolor传2维的z值,先通过reshape把1维数组转为符合要求的2维结构,再传入参数。
代码修复参考
你调用的p.pcolor要求传入的第三参数z为2维数组,假设你确认xco2的总元素数和x、y网格的维度匹配,比如网格为50行100列,就可以按如下方式调整:
# 替换为你实际匹配的行列数 xco2_2d = xco2.reshape(50, 100) c_scheme = p.pcolor(x, y, xco2_2d, cmap = 'jet')
内容的提问来源于stack exchange,提问作者Asma Kowsar
相关产品推荐
相关产品推荐

