统计

次序统计

最小值

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

import numpy as np 
np.random.seed(20201127)
x = np.arange(11,36).reshape(5,5)
y = np.amin(x)
print(y)

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

y = np.amin(x,axis = 1)
print(y)

最大值

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

import numpy as np 
np.random.seed(20201125)
x = np.arange(11,36).reshape(5,5)

y = np.amax(x)
print(y)

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

y = np.amax(x,axis=1)
print(y)

极差

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

import numpy as np

np.random.seed(20201127)
x = np.random.randint(0,20,size=[4,5])
print(x)
# 
print(np.ptp(x))
print(np.ptp(x,axis=0))
print(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)
    print(np.percentile(x,25))
    print(np.percentile(x,[30,60]))
    print(np.percentile(x,[30,60],axis =1))

    均值与方差

    计算中位数

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

import numpy as np

np.random.seed(20201127)
x = np.random.randint(0,20,size=[4,5])
print(np.median(x,axis =1))

    计算平均值

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

import numpy as np

np.random.seed(20201127)
x = np.random.randint(0,20,size=[4,5])
print(x)

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

计算加权平均值

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

不存在权重时,mean和average的功能一样,当存在权重时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.average(x)
print(y)
print( np.average(x,axis = 0))
print(np.average(x,axis = 1))
y = np.arange(1,26).reshape(5,5)
print(y)
z = np.average(x,weights=y)
print(z)
print(np.average(x,axis = 0,weights = y))

方差

numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])Compute the variance along the specified axis.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)
print(np.mean((x-np.mean(x))**2))

y= np.var(x,ddof=1)
print(y)
print(np.sum((x-np.mean(x))**2)/(x.size-1))

标准差

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)
print(y)
y = np.sqrt(np.var(x))
print(y)
print(np.std(x,axis = 0))
print(np.std(x,axis=1))

相关

协方差

协方差的定义为:

cov(X,Y)= E((X-E(X))-(Y-E(Y))=E(XY)-E(X)E(Y)

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))
print(np.cov(y))
print(np.cov(x,y))

z = np.mean((x-np.mean(x))*(y-np.mean(y)))
print(z)
z=np.sum((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)

计算相关性系数

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

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

import numpy as np 
np.random.seed(20201127)
x,y =np.random.randint(0,20,size=(2,4))
print(x)
print(y)
z = np.corrcoef(x,y)
print(z)

直方图

numpy.digitize(x, bins, right=False)

x:numpy数组

bins:一维单调数组,必须是升序或者降序

right:间隔是否包含最右

返回值:x在bins中的位置。

import  numpy as np 
x = np.array([0.2,6.4,3.0,1.6])
bins = np.array([0.0,1.0,2.5,4.0,10.0])
inds = np.digitize(x,bins)
print(inds)
for n in range(x.size):
    print(bins[inds[n]-1],"<=",x[n],"<",bins[inds[n]])


import numpy as np 

x = np.array([1.2,10.0,12.4,15.5,20.])
bins = np.array([0,5,10,15,20])
inds = np.digitize(x,bins,right=True)
print(inds)
inds = np.digitize(x,bins,right = False)
print(inds)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值