为何二维NumPy数组无法对axis 1进行索引?索引越界问题解析
为什么二维数组
arr[1, 0]会触发索引错误? 这是个特别容易搞混的NumPy索引误区,我来给你理清楚:
首先,先看你创建的数组实际结构:
import numpy as np arr = np.array([1, 2, 3, 4, 5], ndmin=2) print(arr) # 输出是 [[1 2 3 4 5]]
它的形状是(1, 5),意思是:
- 轴0(第一个维度):只有1个元素(就是外层的那个列表
[1,2,3,4,5]) - 轴1(第二个维度):这个内层列表有5个元素
你写的arr[1, 0],NumPy会把它解析成:取轴0的第1个元素,再取这个元素里轴1的第0个元素。但轴0的大小只有1,合法索引只能是0,所以直接触发了IndexError——跟你想操作轴1没关系,是第一个索引就超出轴0的范围了。
如果要获取轴1的第一个元素,正确的写法是:
print(arr[0, 0]) # 输出 1
拆解一下:
arr[0]先拿到轴0的唯一元素:[1,2,3,4,5]- 再用
, 0取这个元素里轴1的第0个位置,就是1
再补充个验证小技巧:你可以打印arr[0]看看,它就是轴0对应的那个一维数组,这时候再对它索引就是操作轴1了,比如arr[0][2]也能拿到3,和arr[0,2]效果一样。
内容的提问来源于stack exchange,提问作者Zy Taga
相关产品推荐
相关产品推荐

