numpy入门3:统计相关

次序统计

计算最小/大值

numpy.amin(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue, where=np._NoValue])

numpy.amax(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue, where=np._NoValue])

【计算最大值】

import numpy as np

x = np.array([[11, 12, 33, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 13, 34, 35]])

#选择数组中最大/小的一个数字
y = np.amin(x)
y = np.amax(x)

#选择轴为0的最大/小的数
#二维数组轴的值只有0/1
y = np.amin(x,axis = 0)
y = np.amax(x,axis = 0)
y = np.amin(x,axis = 1)
y = np.amax(x,axis = 1)

计算极差

numpy.ptp(a, axis=None, out=None, keepdims=np._NoValue)

【计算极差】

import numpy as np

x = np.array([[11, 12, 33, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 13, 34, 35]])

y = np.ptp(x)
#不同方向上的各行列极差
y = np.ptp(x,axis = 0)
y = np.ptp(x,axis = 1)

计算分位数

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

【计算分位数】

import numpy as np

np.random.seed(20201127)
x = np.random.randint(0,20,size=[4,5])
print(x)
#q可以理解为你希望得到数组中处于百分之几位置的数
print(np.percentile(x,[25,50])
print(np.percentile(x,[25,50],axis = 0)
#得到二维数组,一组是25的数,一组是50的数

均值与方差

计算中位数

numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False)

np.random.seed(20200623)
x = np.random.randint(0, 20, size=[4, 5])
print(x)
# [[10  2  1  1 16]
#  [18 11 10 14 10]
#  [11  1  9 18  8]
#  [16  2  0 15 16]]
print(np.percentile(x, 50))
print(np.median(x))

print(np.percentile(x, 50, axis=0))
print(np.median(x, axis=0))

计算平均值

numpy.mean(a[, axis=None, dtype=None, out=None, keepdims=np._NoValue)])

【例如】计算平均值

import numpy as np

x = np.array([[1,2,3,4],
			  [4,5,6,7]])

y = np.mean(x)
print(y)
y = np.mean(x,axis = 0)
print(y)

计算加权平均值

numpy.average(a[, axis=None, weights=None, returned=False])

mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的。指定权重后,average可以计算加权平均值。

【例如】计算加权平均值**(将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。)**

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])
y = np.arange(1,26).reshape([5,5])

z = np.average(x,weights = y)
#z = x*y
#np.sum(z)/np.sum(y)
print(z)

z = np.average(x, axis=0, weights=y)
print(z)

计算方差

numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])
  • ddof=0:是“Delta Degrees of Freedom”,表示自由度的个数
  • 要注意方差和样本方差的无偏估计,方差公式中分母上是n;样本方差无偏估计公式中分母上是n-1(n为样本个数)。
import numpy as np

x = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])

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)

无偏估计方差解释

计算标准差

numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])

【例如】计算标准差

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])
y = np.std(x,ddof = 1)
print(y)  
y = np.sqrt(np.var(x,ddof = 1))
print(y)  

y = np.std(x, axis=0)
print(y)
y = np.std(x, axis=1)
print(y)

相关

计算协方差矩阵

在这里插入图片描述协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。

numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)
import numpy as np

x = [1, 2, 3, 4, 6]
y = [0, 2, 5, 6, 7]
print(np.cov(x))  # 3.7   #样本方差
print(np.cov(y))  # 8.5   #样本方差
print(np.cov(x, y))

计算相关系数

numpy.corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue)

理解了np.cov()函数之后,很容易理解np.correlate(),二者参数几乎一模一样。

np.cov()描述的是两个向量协同变化的程度,它的取值可能非常大,也可能非常小,这就导致没法直观地衡量二者协同变化的程度。相关系数实际上是正则化的协方差,n个变量的相关系数形成一个n维方阵。

【例如】计算相关系数

import numpy as np

np.random.seed(20200623)
x, y = np.random.randint(0, 20, size=(2, 4))

print(x)  # [10  2  1  1]
print(y)  # [16 18 11 10]

z = np.corrcoef(x, y)
print(z)

直方图

numpy.digitize(x, bins, right=False)
  • x:numpy数组
  • bins:一维单调数组,必须是升序或者降序
  • right:间隔是否包含最右
  • 返回值:x在bins中的位置。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值