NumPy二维数组元素访问越界时异常提示显示错误axis的问题
NumPy 多维索引报错维度不符问题说明
报错根源
你使用的[][]链式索引属于两次独立的一维索引操作,并非NumPy原生的多维索引,因此会出现报错维度和预期不符的情况,具体执行流程如下:
给定示例数组:
import numpy as np a = np.array([[10,20,30],[40,50,60]]) # 形状为(2,3),axis0长度2,axis1长度3
执行print(a[-2][5])时,会分两步执行:
- 第一步执行
a[-2]:对原二维数组的axis0取索引-2,得到长度为3的一维数组array([10, 20, 30]),该一维数组仅存在axis 0一个维度 - 第二步对上述一维数组执行
[5]索引操作:此时访问的是这个一维数组的axis0,索引5超出了该维度长度3的范围,因此报错提示axis 0越界,属于符合逻辑的正常提示。
正确写法
如果要进行二维数组的多维度索引,请使用NumPy官方推荐的单括号+逗号分隔的写法,一次传入多个维度的索引:
print(a[-2, 5])
此时NumPy会一次性校验两个维度的索引合法性,axis1越界时会输出符合预期的报错:
IndexError: index 5 is out of bounds for axis 1 with size 3
内容的提问来源于stack exchange,提问作者Shailesh Yadav
相关产品推荐
相关产品推荐

