简单分析班级成绩模型

name_dict={0:'数学',1:'语文',2:'英语',3:'化学',4:'物理',5:'体育'}
#初始化一个类
class CourseDesc(object):
    def __init__(self):
        self.name=''
        self.std=0
        self.mean=0
        self.max=0
        self.min=0
        self.sum=0
        
#创建分析课程成绩好坏的类
class ComputerDesc(object,n_array):
    #初始化
    def __init__(self):
        self.score_array=n_array
        self.result=[]
        
        #取值
    def counter_all_course(self):
        for i in range(6):
            c_desc=CourseDesc()
            c_desc.name=name_dict[i]
            c_desc.std=self.score_array[:,i].std()
            c_desc.mean=self.score_array[:,i].mean()
            c_desc.max=self.score_array[:,i].max()
            c_desc.min=self.score_array[:,i].min()
            c_desc.sum=self.score_array[:,i].sum()
            self.result.append(c_desc)
            
            #分析
    def best_course(self):
        
#         std_list=[coursa.std for coursa in self.result]
#         sum_list=[coursa.sum for coursa in self.result]
        std_list=[]
        sum_list=[]
        for coursa in self.result:
            std_list.append(coursa.std)
            sum_list.append(coursa.sum)
            
        std_array=np.array(std_list)
        sum_array=np.array(sum_list)
        #总和最大的单项成绩和索引值
        max_sum_coursa=sum_arrray.max()
        max_sum_index=sum_array.argmax()
        #方差最小的单项成绩和其索引值
        min_std_coursa=std_arrray.min()
        min_std_index=std_array.argmin()
        
        #按照标准具体分析哪一科更好
        if max_sum_index==max_sum_coursa:
            
            return name_dict[max_sum_index]
        
        else:
            #取出总和最大的学科的方差值
            maxscore_std=std_array[max_sum_index]
            #取出方差最小的学科的总和
            minstd_sum=sum_arrray[min_std_index]
            #总和的变化值
            sum_delta=max_sum_coursa-minstd_sum
            #方差的变化值
            std_delta=maxscore_std-min_std_coursa
            #总和和方差的变化率
            sum_percent=sum_delta/max_sum_coursa
            std_percent=std_delta/min_std_coursa
            
            if sum_percent<0.05 and std_percent>0.2:
                
                return name_dict[min_std_index]
            
computerdesc=ComputerDesc(my_matrix)     

对一个班级的各科成绩进行分析,选出班级里成绩较好的学科。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值