2 回答

TA貢獻1835條經(jīng)驗 獲得超7個贊
您已經(jīng)交換了i1and的定義i2,這會導(dǎo)致您遇到錯誤。以下是修復(fù)代碼的方法:
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]中相當(dāng)于np.size(grades, 0)在您的原始代碼中。thegrades.shape[0]是比較常用的成語。
此外,我已經(jīng)-1從您的范圍定義中刪除了所有調(diào)整。如果你有這些,它會阻止你的循環(huán)到達數(shù)組中的最后一個值。的行為range是它會在達到您設(shè)置的最大值之前停止一個值。
例如,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條經(jīng)驗 獲得超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]
當(dāng)您調(diào)用時,grades[i1,i2]您可以擁有g(shù)rades[0,3]和超出范圍,因為該軸具有三個元素。
我想解決的辦法是改變 grades[i1,i2]對grades[i2,i1]地方出現(xiàn)(三次)。
添加回答
舉報