numpy统计学
1.求平均值[数组名.mean()/np.mean(数组名)]
m1 = np.arange(20).reshape((4,5))
m1.mean()
#9.5
若想要求某一维的平均值,设置axis参数,多维数组元素指定:
- axis = 0,将从上往下计算。
- axis = 1,将从左往右计算
- 无axis参数,默认将所有元素相加除以个数。
m1 = np.arange(20).reshape((4,5))
m1.mean(axis = 0) #得到每列的平均值的一维数组
#array([7.5,8.5,9.5,10.5,11.5])
m1.mean(axis = 1) #得到每行的平均值的一维数组
#array([ 2., 7., 12., 17.])
2.中位数[np.median(数组名)]
又称中位数、中值
是按顺序排列后的一组数组中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值
-
平均数:是一个‘虚拟’的数,是通过计算得到的它不是数据中的原始数据。.
-
中位数:是一个不完全"虚拟"的数。
-
平均数:反映了一组数据的平均大小,常用来一代表数据的总体 “平均水平”
-
中位数:像一条分界线,将数据分成前半部分和后半部分,因此用来代表一组数据的"中等水平"
ar1 = np.array([1,3,5,6,8])
np.median(ar1)
out: 5.0
ar1 = np.array([1,3,5,6,8,9])
np.median(ar1)
out: 5.5
3.求标准差[np.std(数组名)]
在概率统计中最常使用作为统计分布程度上的测量,是反映一组数据离散程度最常用的一种量化形式,是表示精确度的重要指标
- 标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。
简单来说,标准差是一组数据平均值分散程度的一种度量。
- 一个较大的标准差,代表大部分数值和其平均值之间差异较大;
- 一个较小的标准差,代表这些数值较接近平均值。`
a = np.array([95,85,75,65,55,45])
b = np.array([73,72,71,69,68,67])
np.std(a)
np.std(b)
#17.07825127659933
#2.160246899469287
标准差的计算公式:
import math
# 按步骤计算下标准差
(a - np.mean(a))**2)
math.sqrt(np.sum(((a - np.mean(a))**2)/a.size))
标准差应用于投资上,可作为量度回报稳定性的指标。
标准差数值越大,代表回报远离过去平均数值,回报较不稳定故风险越高。
相反,标准差数值越小,代表回报较为稳定,风险亦较小。
4.方差[数组名.var()]
衡量随机变量或一组数据时离散程度的度量
a = np.array([95,85,75,65,55,45])
b = np.array([73,72,71,69,68,67])
print('A组的方差为:',a.var())
print('B组的方差为:',b.var())
A组的方差为: 291.6666666666667
B组的方差为: 4.666666666666667
5.求最大值[数组名.max()/np.max(数组名)]
m1 = np.array(
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
)
m1.max()
np.max(m1)
m1.max(axis=1)
np.max(m1,axis=1)
#axis=0,从上往下查找: [15 16 17 18 19]
#axis=1,从左往右查找 [ 4 9 14 19]
6.求最小值[数组名.min()/np.min(数组名)]
m1.min()
print('axis=0,从上往下查找:',m1.min(axis=0))
print('axis=1,从左往右查找',m1.min(axis=1))
0
axis=0,从上往下查找: [0 1 2 3 4]
axis=1,从左往右查找 [ 0 5 10 15]
7.求和[数组名.sum()/np.sum(数组名)]
print(m1)
print(np.sum(m1))
print('axis=0,从上往下查找:',np.sum(m1,axis=0))
print('axis=1,从左往右查找',np.sum(m1,axis=1))
190
axis=0,从上往下查找: [30 34 38 42 46]
axis=1,从左往右查找 [10 35 60 85]
8.加权平均值[np.average(数组名)]
即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数
格式:
numpy.average(a, axis=None, weights=None, returned=False)
weights: 数组,可选
与 a 中的值关联的权重数组。 a 中的每个值都根据其关联的权重对平均值做出贡献。权重数组可以是一维的(在这种情况下,它的长度必须是沿给定轴的 a 的大小)或与 a 具有相同的形状。如果 weights=None,则假定 a 中的所有数据的权重等于 1。一维计算是:
avg = sum(a * weights) / sum(weights)
对权重的唯一限制是 sum(weights) 不能为 0. `
average_a1 = [20,30,50]
print(np.average(average_a1))
print(np.mean(average_a1))
实列:计算学科综合成绩
使用“示例—权重已知”中的数据,我们对比两位学生的考试成绩
姓名 | 平时测验 | 期中考试 | 期末考试 |
---|---|---|---|
小明 | 80 | 90 | 95 |
小刚 | 95 | 90 | 80 |
学校规定的学科综合成绩的计算方式是:
平时测验占比 | 期中考试占比 | 期末考试占比 |
---|---|---|
20% | 30% | 50% |
要求 :比较谁的综合成绩更好
xiaoming = np.array([80,90,95])
xiaogang = np.array([95,90,80])
# 权重:
weights = np.array([0.2,0.3,0.5])
# 分别计算小明和小刚的平均值
print(np.mean(xiaoming))
print(np.mean(xiaogang))
# 分别计算小明和小刚的加权平均值
print(np.average(xiaoming,weights=weights))
print(np.average(xiaogang,weights=weights))
# 对比得到结果
88.33333333333333
88.33333333333333
90.5
86.0
变异系数:原始数据标准差与原始数据平均数的比