python - 如何从矩阵中的行中删除最小值 -

标签 python matrix delete-row

因此,我们的任务是创建一个函数,获取输入成绩~(一个 N ×M 矩阵,其中包含在 M 个不同作业中给予 N 个学生的 7 级评分。),并计算 GradesFinal(一个向量长度 n 包含 N 个学生中每个学生的最终成绩。)。

对于每个学生,最终成绩必须按以下方式计算:

  1. 如果只有一项作业 (M = 1),则最终成绩等于该作业的成绩。

  2. 如果有两个或多个作业 (M > 1),则丢弃最低成绩。最终成绩的计算方式为 M − 1 个最高成绩的平均值,四舍五入到 等级上最接近的等级(使用函数 roundGrade)。

  3. 无论上述情况如何,如果学生在一项或多项作业中获得 -3 分,则最终成绩必须始终为 -3。

我已在下面插入了 roundGrade 函数,但是当我尝试运行矩阵时,我收到了。 “类型错误:/不支持的操作数类型:'NoneType' 和 'int'”。这意味着我可能完全误解了某些东西。

import numpy as np
def computeFinalGrades(grades):
    if len(grades)==1:
    gradesFinal = grades
elif len(grades)>=2:
    trimmed = grades.remove(min(grades))
    finalgrade = np.mean(trimmed)
    gradesFinal = roundGrade(finalgrade)
elif grades[grades==-3]:
    gradesFinal= -3
    return gradesFinal

def roundGrade(grades):
   grade_groups = [-3,0,2,4,7,10,12]
   gradesRounded = [min(grade_groups,key=lambda x:abs(grade-x)) for grade in     grades]
   return gradesRounded

感谢您的帮助,并欢迎向我展示更聪明的方法。

最佳答案

这是一个直接作用于NxM二维数组的解决方案,而不是单独作用于每个向量,所以我假设M对于所有学生都是相同的,并且设置了缺失值(作业)到nanG 也可以只是 1d,这意味着每个学生只有 1 份作业。

def grades(G):
    import numpy

    # return G directly if there is only 1 assignment (M=1)
    if len(G.shape) == 1 or G.shape[1] == 1:
        return G[:]

    # sort for easier calculation of mean
    SG = numpy.sort(G)

    # set all values to -3 if a -3 is found on any assignment of that student
    m3 = numpy.where(SG==-3)[0]
    SG[m3] = -3

    levels = numpy.array((-3, 0, 2, 4, 7, 10, 12))
    # take the mean of all assigments except the worst (index=0 of each student)
    MG = numpy.nanmean(SG[:,1:], axis=-1)

    # find the nearest grade in the list of levels, rounding down if two are equally close
    diffs = numpy.abs(MG[:,None] - levels)
    index = numpy.nanargmin(diffs, axis=-1)

    return levels[index]

关于python - 如何从矩阵中的行中删除最小值 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884383/

相关文章:

Python 多线程时的诅咒

python - Tensorflow 获取张量中值的索引

ios - TableView deleteRowsAtIndexPaths :withRowAnimation Very Slow

python - Django:有没有办法在嵌套文件夹中加载模板?

python - 使用自己的函数优化 groupby.apply

python - 将 celery 与现有的 MySQL 表一起使用而不是 broker ,这可能吗?

c++ - 没有g++优化,一个复杂的模板类函数失效

Java for循环制作 Asterisk 矩阵

python - 在 Python 中删除 CSV 的前四行?

sql-server - SQL Server 中增量批量删除和插入操作非常慢