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)
对一个班级的各科成绩进行分析,选出班级里成绩较好的学科。