Python中3D数组索引越界求助:400×4×4矩阵赋值报错
解决NumPy三维数组索引越界问题
嗨,我来帮你搞定这个报错的问题~
问题原因
你遇到的IndexError本质是NumPy数组的索引从0开始计数,而不是从1开始。你创建的数组clij_the = np.zeros((400,4,4))三个维度的尺寸分别是400、4、4,所以每个维度的有效索引范围是:
- 第一个维度(400个元素):
0到399 - 第二个维度(4个元素):
0到3 - 第三个维度(4个元素):
0到3
你写的clij_the[:,0,4]里,第三个维度用了索引4,但这个维度最大的有效索引是3,自然会触发“索引越界”的错误。而且你要赋值的是row[3](也就是Cl_the每行的第4个元素),正好对应数组第三维度的索引3,所以这里的索引写错啦。
解决方法
只需要把索引4改成3就可以正常运行了:
# 错误写法 # clij_the[:,0,4]=[row[3] for row in Cl_the] # 正确写法 clij_the[:,0,3] = [row[3] for row in Cl_the]
额外优化小技巧
如果Cl_the本身是NumPy数组的话,不用列表推导,直接用切片赋值会更高效:
clij_the[:,0,3] = Cl_the[:, 3]
内容的提问来源于stack exchange,提问作者FiSer
相关产品推荐
相关产品推荐

