2 回答
TA贡献1835条经验 获得超7个赞
您已经交换了i1and的定义i2,这会导致您遇到错误。以下是修复代码的方法:
for i1 in range(grades.shape[0]):
for i2 in range(grades.shape[1]):
for i3 in range(len(gradeList)):
if grades[i1,i2] != gradeList[i3]:
print(grades[i1,i2])
print(i1,i2,i3)
print("This is an error"+str(grades[i1,i2]))
else:
print("FINE")
在上面的代码grades.shape[0]中相当于np.size(grades, 0)在您的原始代码中。thegrades.shape[0]是比较常用的成语。
此外,我已经-1从您的范围定义中删除了所有调整。如果你有这些,它会阻止你的循环到达数组中的最后一个值。的行为range是它会在达到您设置的最大值之前停止一个值。
例如,list(range(len(gradeList)))将返回 的完整索引集gradeList:
[0, 1, 2, 3, 4, 5, 6]
而list(range(len(gradeList - 1)))将省略最后一个索引:
[0, 1, 2, 3, 4, 5]
TA贡献1827条经验 获得超9个赞
我认为问题出在那里:
# i1 => [0,1]
# i2 => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
# i3 => [0, 1, 2, 3, 4, 5]
当您调用时,grades[i1,i2]您可以拥有grades[0,3]和超出范围,因为该轴具有三个元素。
我想解决的办法是改变 grades[i1,i2]对grades[i2,i1]地方出现(三次)。
添加回答
举报