Day08:统计相关

统计相关脑图

次序统计

  1. 计算最小值
    numpy.amin(a,[ axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,where=np._NoValue])
  2. 计算最大值
    numpy.amax(a,[ axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,where=np._NoValue])
    a:array,输入的数组。
    axis:默认值为0,限制数组行最小还是列最小
    keepdims:保持矩阵维数不变,因为在对axis进行指定轴操作会使矩阵发生降维,使用此参数会使维度保持为1,它的默认值为True.
    详情请参照官网解释
    keepdims参数
import numpy as np
x=np.arange(20).reshape((4,5))
print(x)
#[[ 0  1  2  3  4]
# [ 5  6  7  8  9]
# [10 11 12 13 14]
# [15 16 17 18 19]]
y=np.amin(x)
print(y)
#0
y=np.amin(x,axis=0)#列最小
print(y)
#[0 1 2 3 4]
y=np.amin(x,axis=1)#行最小
print(y)
#[ 0  5 10 15]
y=np.amax(x)
print(y)
#19
y=np.amax(x,axis=0)
print(y)
#[15 16 17 18 19]
y=np.amax(x,axis=1)
print(y)
#[ 4  9 14 19]

nanmin()和ninmax()函数:返回一个忽略任一个nan的数组中的最小值或沿某轴的最小值

  1. 计算极差
    极差:极差又称范围误差或全距(Range),以R表示,是用来表示统计资料中的变异量数(measures of variation),其最大值与最小值之间的差距,即最大值减最小值后所得之数据。(来自百度词条)
    numpy.ptp(a, axis=None, out=None, keepdims=np._NoValue)
import numpy as np
np.random.seed(20201127)
x=np.random.randint(0,10,size=[4,5])#用0~10的数随机生成4*5的数组
print(x)
print(np.ptp(x))
print(np.ptp(x,axis=0))#列
print(np.ptp(x,axis=1))#行
#[[2 2 0 9 5]
# [5 7 0 1 3]
# [9 5 0 7 1]
# [8 7 2 1 4]]
#9
#[7 5 2 8 4]
#[9 7 9 7]
  1. 计算分位数
    分位数:分位数(Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。(来自百度词条)常见的有二分位,四分位,百分位。
    numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation=‘linear’, keepdims=False)
    a:array,用来算分位数的对象,可以是多维的数组。
    q:介于0-100的float,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置的数就[25,75]。
    axis:坐标轴的方向,一维的就不用考虑了,多维的就用这个调整计算的维度方向,取值范围0/1。
mport numpy as np
np.random.seed(20201127)
x=np.random.randint(0,10,size=[4,5])
print(x)
#[[2 2 0 9 5]
# [5 7 0 1 3]
# [9 5 0 7 1]
# [8 7 2 1 4]]
print(np.percentile(x,[25,50]))
print(np.percentile(x,[25,50],axis=0))
print(np.percentile(x,[50,75],axis=1))
#[1.  3.5]
#[[4.25 4.25 0.   1.   2.5 ]
# [6.5  6.   0.   4.   3.5 ]]
#[[2. 3. 5. 4.]
# [5. 5. 7. 7.]]

计算分位数可以参考官网的相关函数
百分位计算

均值与方差

  1. 计算中位数
    numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False)
    out:输出数据的存放对象,参数要与预期输出有相同的形状和缓冲区长度
    overwrite_input=False:bool值,默认False,为True时,直接在数组内存计算,计算后原数组无法保存
    参考官方文档:
    统计相关参数
  2. 计算平均值
    numpy.mean(a[, axis=None, dtype=None, out=None, keepdims=np._NoValue)])
  3. 加权平均值
    numpy.average(a[, axis=None, weights=None, returned=False])
import numpy as np
np.random.seed(20201127)
x=np.random.randint(0,10,size=[4,5])
print(x)
#[[2 2 0 9 5]
# [5 7 0 1 3]
# [9 5 0 7 1]
# [8 7 2 1 4]]
print(np.percentile(x,50))
print(np.median(x))
print(np.percentile(x,50,axis=0))
print(np.median(x,axis=0))
print(np.median(x,axis=0,overwrite_input=False))#基本上没有什么影响
#3.5
#3.5
#[6.5 6.  0.  4.  3.5]
#[6.5 6.  0.  4.  3.5]
#[6.5 6.  0.  4.  3.5]
y=np.mean(x)#计算平均值
print(y)
y=np.mean(x,axis=0)#axis的操作同上,以下的函数中我只介绍一种情况
print(y)
#3.9
#[6.   5.25 0.5  4.5  3.25]
y=np.average(x)#计算加权平均值
print(y)
y=np.average(x,axis=0)
print(y)
#3.9
#[6.   5.25 0.5  4.5  3.25]
z=np.average(x,weights=x)
print(z)
z=np.average(x,axis=0,weights=x)
print(z)
#6.256410256410256
#[7.25       6.04761905 2.         7.33333333 3.92307692]
  1. 计算方差
    numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])
    ddof:表示自由度个数,减小样本偏差
import numpy as np
np.random.seed(20201127)
x=np.random.randint(0,10,size=[4,5])
print(x)
#[[2 2 0 9 5]
# [5 7 0 1 3]
# [9 5 0 7 1]
# [8 7 2 1 4]]
y=np.var(x)
print(y)
y=np.mean((x-np.mean(x))**2)
print(y)
y=np.var(x,ddof=1)
print(y)
y=np.sum((x-np.mean(x))**2)/(x.size-1)#方差计算公式
print(y)
y=np.var(x,axis=0)
print(y)
#9.190000000000001
#9.190000000000001
#9.673684210526316
#9.673684210526316
#[ 7.5     4.1875  0.75   12.75    2.1875]
  1. 计算标准差
    标准差:标准差是一组数据平均值分散程度的一种度量,是方差的算术平方根。
    numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])
import numpy as np
np.random.seed(20201127)
x=np.random.randint(0,10,size=[4,5])
print(x)
#[[2 2 0 9 5]
# [5 7 0 1 3]
# [9 5 0 7 1]
# [8 7 2 1 4]]
y=np.std(x)
print(y)
y=np.sqrt(np.var(x))#标准差计算公式,方差的平方
print(y)
y=np.std(x,axis=0)
print(y)
#3.031501278244824
#3.031501278244824
#[2.73861279 2.04633819 0.8660254  3.57071421 1.47901995]

相关

  1. 计算协方差矩阵
    协方差矩阵:在统计学与概率论中,协方差矩阵的每个元素是各个向量元素之间的协方差,是从标量随机变量到高维度随机向量的自然推广。(来自百度词条)反映随机变量的分散程度。
    numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)
    cov()函数描述的是两个向量协同变化的程度,它的取值可能非常大,也可能非常小,这就导致没法直观地衡量二者协同变化的程度。相关系数实际上是正则化的协方差, n 个变量的相关系数形成一个 n 维方阵。
import numpy as np
x=np.arange(6)
y=np.random.randint(0,10,size=6)
print(np.cov(x))#样本方差
print(np.cov(y))
print(np.cov(x,y))
#3.5
#16.0
#[[ 3.5  1.6]
# [ 1.6 16. ]]
print(np.var(x))
print(np.var(x,ddof=1))#样本方差
#2.9166666666666665
#3.5
print(np.var(y))
print(np.var(y,ddof=1))
#13.333333333333334
#16.0
z=np.mean((x-np.mean(x))*(y-np.mean(y)))#协方差
print(z)
z=np.mean((x-np.mean(x))*(y-np.mean(y)))/(len(x)-1)#样本协方差
print(z)
z=np.dot(x-np.mean(x),y-np.mean(y))/(len(x)-1)#样本协方差
print(z)
#1.3333333333333333
#0.26666666666666666
#1.6
  1. 计算相关系数
    numpy.corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue)
import numpy as np
x=np.arange(6)
y=np.random.randint(0,10,size=6)
z=np.corrcoef(x,y)
print(z)
a=np.dot(x-np.mean(x), y-np.mean(y))
b=np.sqrt(np.dot(x-np.mean(x),x-np.mean(x))) 
c=np.sqrt(np.dot(y-np.mean(y),y-np.mean(y))) 
print(a/(b*c))
#[[1.         0.24951808]
# [0.24951808 1.        ]]
#0.24951807530747172

直方图

numpy.digitize(x, bins, right=False)
x:numpy数组
bins:一维单调数组,必须是升序或者降序
right:间隔是否包含最右
返回值:x在bins中的位置。

import numpy as np
x=np.arange(6)#注意数组必须是单调数组
bins=np.arange(1,7)
inds=np.digitize(x,bins) 
print(inds)
for n in range(x.size):
    print(bins[inds[n]-1],"<=",x[n],"<",bins[inds[n]])
    
#[0 1 2 3 4 5]
#6 <= 0 < 1
#1 <= 1 < 2
#2 <= 2 < 3
#3 <= 3 < 4
#4 <= 4 < 5
#5 <= 5 < 6

今天与统计相关的知识点就介绍到这里了
功不在戾,但求有恒!
加油!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值