Индекс кортежа вне диапазона? - PullRequest
0 голосов
/ 25 июня 2019

Мы работали над этой функцией, которая должна вычислять итоговые оценки для некоторых учащихся на основе их оценок в ряде заданий. Наш вход - это матрица NxM, содержащая оценки для N учащихся и M заданий (а оценка - это число). Предполагается, что функция выполняет 3 следующие вещи:

  1. Если имеется только одно назначение (M = 1), итоговая оценка должна совпадать с оценкой для этого назначения.
  2. если имеется два или более заданий, самый низкий балл отбрасывается, а итоговый балл рассчитывается как среднее значение M-1.
  3. если ученик получает оценку -3, итоговая оценка также должна быть -3.

Мы пробовали следующий код (roundGrades() - еще одна созданная нами функция), но мы продолжаем получать ошибки.

Может кто-нибудь помочь решить эту проблему?

def computeFinalGrades(grades):
    grades = np.array(grades)
    SortData = np.sort(grades)
    gradesFinal = np.zeros(np.size(grades, axis = 0))

    for i in range(np.size(grades, axis = 0)):        
        if np.size(grades, axis = 1) == 1:
            gradesFinal[i] = grades[i,0]

        elif np.any(grades[i] == -3):
            gradesFinal[i] = -3

        else:
            gradesFinal[i] = roundGrade([np.mean(SortData[i,1::])])[0]

    return gradesFinal

Сообщение об ошибке, которое мы получаем прямо сейчас:

if np.size(grades, axis = 1) == 1:
File "C:\Users\h\Anaconda3\lib\site- 
 packages\numpy\core\fromnumeric.py", line 2931, in size
    return a.shape[axis]
IndexError: tuple index out of range

Но программа также ранее жаловалась на строку, которая использует np.sort().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...