Numpy多维数组索引报错求助:索引元素时出现错误
解决Numpy数组索引越界问题
嘿,我来帮你搞定这个索引错误的问题!先看你创建数组的代码:
import numpy as np a = np.zeros([10,6,1,1], dtype=np.float32)
这个数组的形状是(10, 6, 1, 1),Numpy的数组索引是从0开始计数的,每个维度的有效索引范围是0到「维度长度-1」。
你执行print(a[2,3,1,1])时出错,核心原因是后两个维度的索引越界了:
- 第一维度长度为10,有效索引是0-9,
2是合法的 - 第二维度长度为6,有效索引是0-5,
3是合法的 - 第三维度长度只有1,有效索引只能是
0,你用1就超出范围了 - 第四维度同理,长度1,有效索引也只有
0
所以正确的索引写法应该是这样:
print(a[2,3,0,0])
另外,因为后两个维度的长度都是1,你还可以简化索引,Numpy会自动适配维度:
# 以下几种写法都能得到正确结果 print(a[2,3]) print(a[2,3,0]) print(a[2,3,0,0])
这样就不会再触发索引错误啦!
内容的提问来源于stack exchange,提问作者TassosK
相关产品推荐
相关产品推荐

