python функция, показывающая ошибку, матрицу, векторы, чтение файла csv - PullRequest
0 голосов
/ 20 июня 2020

Теперь у меня есть этот код:

def computeFinalGrades(grades):

# loading and reading the file
gradesCSV=pd.read_csv(grades)
print(gradesCSV)

# creating matrix only with the grades
matrixGrades=np.array(gradesCSV.iloc[0:8,2:])
print(matrixGrades)

# creating empty array
result_vector=[]

for array in matrixGrades:
    if -3 not in array: 
        array = array[~np.isnan(array)] # removing any NaN values
        if len(array) == 1:
            mean_result = array[0]
        else:
            min_value = min(array)
            mean_result = (sum(array)-min(array))/(len(array)-1)
            print(mean_result)
    else: #-3 is in the list
        mean_result = -3
    result_vector.append(mean_result)
print(result_vector)
 
gradesFinal=np.array(result_vector)        

return gradesFinal

computeFinalGrades('test.csv')

И в этой строке: mean_result = (sum (array) -min (array)) / (len (array) -1) он должен вернуть округленный число, которое округляется с помощью другой функции, которую я имею и импортирую.

Он продолжает выдавать мне ошибку, так могу ли я использовать свою функцию округления? Он отлично работает в другом файле с плавающим числом и вектором

1 Ответ

0 голосов
/ 20 июня 2020

Вот дополнительное решение (немного запутанное, но простое (грубая итеративная сила!))

EDIT: после разговора с автором вопроса я публикую полный код, который помог ему решить вопрос.

import numpy as np

result_vector = []
full_array = np.array(a) # I don't think I understand what a is here
for array in matrixGrades:
    if -3 not in array:
        array = array[~np.isnan(array)]
        if len(array) == 1:
            grade = roundedGrade(array[0])
        else:
            grade = math.floor((sum(array)-min(array))/(len(array)-1))
            grade = roundGrade(grade)
    else: #-3 is in the list
        grade = -3
    result_vector.append(grade)
print(result_vector)


def roundGrade(grades):
       
    # possible grades
    Grade=np.array([-3,0,2,4,7,10,12])
    
    for i in range(len(grades)):
        index=(np.abs(Grade-grades[i])).argmin()
        gradeRounded = Grade[index]
        
    return gradeRounded

вы, конечно, можете превратить список в вектор, используя np.array ...

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