为了账号安全,请及时绑定邮箱和手机立即绑定

Python,将 n × m numpy 数组与 n 大小的 numpy 数组进行比较

Python,将 n × m numpy 数组与 n 大小的 numpy 数组进行比较

回首忆惘然 2021-09-11 16:47:57
我正在做一个编程项目,但由于某种原因我很难受困。gradeList = [-3,0,2,4,7,10,12]    for i1 in range(np.size(grades,1)-1):        for i2 in range(np.size(grades,0)-1):            for i3 in range(len(gradeList)-1):                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")我正在尝试为我的gradeList 中的每个值检查n × m 数组中的每个值,最终我想打印不在gradeList 中的n × m 数组中成绩的位置。我收到以下错误代码:IndexError: index 3 is out of bounds for axis 1 with size 3我的成绩数组: grades = np.array([[  7.    7.    4. ],[ 12.   10.   10. ],[ -3.    7.    2. ],[ 10.   12.   12. ],[ 12.   12.   12. ],[ 10.   12.   12. ],[ -3.8   2.2  11. ],[ 20.   12.6 100. ],[  4.   -3.    7. ],[ 10.   10.   10. ],[  4.   -3.    7. ],[ 10.   10.   10. ],[ 10.   10.   10. ],[ 12.   12.   12. ],[ -3.   -3.   -3. ],[ 20.   12.6 100. ]])
查看完整描述

2 回答

?
qq_花开花谢_0

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]


查看完整回答
反对 回复 2021-09-11
?
素胚勾勒不出你

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]地方出现(三次)。


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信