python利⽤numpy统计成绩_Python科学计算:⽤NumPy快速
处理数据
创建数组
import numpy as np
a=np.array([1,2,3])
b=np.array([[1,2,3],[4,5,6],[7,8,9]])
b[1,1]=10
print(a.shape)
print(b.shape)
print(a.dtype)
print(b)
结构数组
import numpy as np
persontype=np.dtype({
"names":["name","age","chinese","math","english"],
"formats":["S32","i","i","i","f"]
})
peoples=np.array([("ZhangFei",32,75,100,90),
("GuanYu",24,85,96,88.5),("ZhaoYun",28,85,92,96.5),
("HuangZhong",29,65,85,100)],dtype=persontype)
ages=peoples[:]["age"]
chineses = peoples[:]['chinese']
maths = peoples[:]['math']
englishs = peoples[:]['english']
an(ages))
an(chineses))
an(maths))
an(englishs))
连续数组的创建
import numpy as np
x1=np.arange(1,11,2) #初始值、终值、步长
x2=np.linspace(1,9,5) #初始值、终值、元素个数
print(x1)
print(x2)
排序
import numpy as np
'''
sort(a, axis=-1, kind=‘quicksort’, order=None),默认情况下使 ⽤的是快速排序;在 kind ⾥,可以指定 quicksort、mergesort、heapsort 分别表⽰快 速排序、合并排序、堆排序。
同样 axis 默认是 -1,即沿着数组的最后⼀个轴进⾏排序, 也可以取不同的 axis 轴,或者 axis=None 代表采⽤扁平化的⽅式作为⼀个向量进⾏排 序。
另外 order 字段,对于结构化的数组可以指定按照某个字段进⾏排序
'''
a=np.array([[4,3,2],[2,4,1]])
print(np.sort(a))
# print(np.sort(a,axis=None))
# print(np.sort(a,axis=0))
print(np.sort(a,axis=1))
算术运算
import numpy as np
x1=np.arange(1,11,2)
x2=np.linspace(1,9,5)
print(x1,x2)
print(np.add(x1,x2)) #加
print(np.subtract(x1,x2)) #减
print(np.multiply(x1,x2)) #乘
print(np.divide(x1,x2)) #除
print(np.power(x1,x2)) #求n次⽅
ainder(x1,x2)) #求余数
统计函数
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
#计数组 / 矩阵中的最⼤值函数 amax(),最⼩值函数 amin()
print(np.amin(a))
print(np.amin(a,0))
print(np.amin(a,1))
print(np.amax(a))
print(np.amax(a,0))
print(np.amax(a,1))
#统计最⼤值与最⼩值之差 ptp()
print(np.ptp(a)) #统计数组中最⼤值与最⼩值的差,即 9-1=8
print(np.ptp(a,0)) #沿着 axis=0 轴的最⼤值与最⼩值之差,即 7-1=6(当然 8-2=6,9- 3=6,第三⾏减去第⼀⾏的 ptp 差均为 6)
print(np.ptp(a,1)) #沿着 axis=1 轴的最⼤值 与最⼩值之差,即 3-1=2(当然 6-4=2, 9-7=2,即第三列与第⼀列的 ptp 差均为 2)
#统计数组的百分位数 percentile()
'''
percentile() 代表着第 p 个百分位数,这⾥ p 的取值范围是 0-100,如果 p=0, 那么就是求最⼩值,如果 p=50 就是求平均值,如果 p=100 就是求最⼤值。同样你也可 以求得在 axis=0 和 axis=1 两个轴上的 p% 的百分位数
'''
print(np.percentile(a,50))
print(np.percentile(a,50,axis=0))
print(np.percentile(a,50,axis=1))
# 统计数组中的中位数 median()、平均数 mean()
# 求中位数
dian(a))
dian(a,axis=0))
dian(a,axis=1))
# 求平均数
an(a))
an(a,axis=0))
an(a,axis=1))
#统计数组中的加权平均值 average()
a=np.array([1,2,3,4])
wts=np.array([1,2,3,4])
print(np.average(a))
print(np.average(a,weights=wts))
#统计数组中的标准差 std()、⽅差 var()
a=np.array([1,2,3,4])
print(type(a))
print(np.std(a))
print(np.var(a))
练习题:统计全班成绩
import numpy as np
persontype=np.dtype({
"names":["name","chineses","englishs","maths"], "formats":["U10","i","i","i"]
})
peoples=np.array([
("张飞",66,65,30),
("关⽻",95,85,98),
("赵云",93,92,96),
("黄忠",90,88,77),
("典韦",80,90,90)
],dtype=persontype)
linspace numpy# print(peoples)
'''
平均成绩、最⼩成绩、最⼤成绩、⽅差、标准差。然后把这些⼈的总成绩 排序,得出名次进⾏成绩输出'''
name=peoples[:]["name"]
chineses = peoples[:]['chineses']
englishs = peoples[:]['englishs']
maths = peoples[:]['maths']
#平均数
print("语⽂平均分: ",np.mean(chineses))
print("数学平均分: ",np.mean(maths))
print("英语平均分: ",np.mean(englishs))
#最⼩成绩
print("语⽂最⼩成绩: ",np.min(chineses))
print("英语最⼩成绩: ",np.min(englishs))
print("数学最⼩成绩: ",np.min(maths))
#最⼤成绩
print("语⽂最⼤成绩: ",np.max(chineses))
print("英语最⼤成绩: ",np.max(englishs))
print("数学最⼤成绩: ",np.max(maths))
#标准差
print("语⽂标准差: ",np.std(chineses))
print("英语标准差: ",np.std(englishs))
print("数学标准差: ",np.std(maths))
#⽅差
print("语⽂⽅差: ",np.var(chineses))
print("英语⽅差: ",np.var(englishs))
print("数学⽅差: ",np.var(maths))
#总成绩
print(peoples[:][:1])
print(np.sort())
peoples[:]['总成绩']=chineses+englishs+maths
print(peoples)
#总成绩进⾏排序
# total=peoples[:]['chineses']+peoples[:]['englishs']+peoples[:]['maths']
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论