首页 > 编程笔记

Numpy常用统计函数详解

Numpy 中提供了常用的数学统计函数。通过这些统计函数我们可以很容易求得最大值、最小值、分位数、均值方差等。另外我们还可以计算两个向量的相关性。

1. 基本统计函数

基本统计函数一般用于求最大值、最小值、分位数。基本统计函数返回的是对该数组整体的描述。示例代码如下。
In [1]: import numpy as np
In [2]: a=np.array([[1,2,3],
   ...:             [4,5,6],
   ...:             [7,8,9]]) 

1) admin求最小值

amin 方法用来计算最小值,我们可以通过axis参数指定是计算每一行的最小值,还是每一列的最小值,还是整体的最小值。
In [3]: np.amin(a,axis=0)  # 按行,返回最小值
Out[3]: array([1, 2, 3])
In [4]: np.amin(a,axis=1)  # 按列,返回最小值
Out[4]: array([1, 4, 7])
In [5]: np.amin(a,axis=None)  # 整体返回最小值
Out[5]: 1 

2) amax求最大值

amax 方法是与 amin 相对的方法,用于获得指定 axis 的最大值。
In [3]: np.amax(a,axis=0)  # 按行,返回最小值
Out[3]: array([1, 2, 3])
In [4]: np.amax(a,axis=1)  # 按列,返回最小值
Out[4]: array([1, 4, 7])
In [5]: np.amax(a,axis=None)  # 整体返回最小值
Out[5]: 7

3) ptp()求最值差

ptp 方法用来获得某行、某列或者整体的最大值与最小值的差值。
In [9]: np.ptp(a,axis=0)  # 按行,返回最大值-最小值
Out[9]: array([6, 6, 6])
In [10]: np.ptp(a,axis=1)  # 按列,返回最大值-最小值
Out[10]: array([2, 2, 2])
In [11]: np.ptp(a,axis=None)  # 整体返回最大值-最小值
Out[11]: 8

4) percentile求分位数

percentile 方法用来获得相应 axis 的分位数。
In [12]: np.percentile(a,50,axis=0)  # 按行,返回50分位数
Out[12]: array([4., 5., 6.])
In [13]: np.percentile(a,50,axis=1)  # 按列,返回50分位数
Out[13]: array([2., 5., 8.])
In [14]: np.percentile(a,50,axis=None)  # 整体,返回50分位数
Out[14]: 5.0 

2. 反应数据波动函数

Numpy 中提供了求均值与方差的函数。均值和方差反映了数组的波动程度,这两个指标是非常重要的。示例代码如下。
In [1]: import numpy as np
In [2]: a=np.array([[1,2,3],
   ...:             [4,5,6],
   ...:             [7,8,9]])

1) median计算中位数

median 方法用来计算中位数,通过 axis 设置按行、按列还是按整体计算。
In [3]: np.median(a,axis=0)  # 按行取中位数
Out[3]: array([4., 5., 6.])
In [4]: np.median(a,axis=1)  # 按列取中位数
Out[4]: array([2., 5., 8.])
In [5]: np.median(a,axis=None)  # 按整体取中位数
Out[5]: 5.0 

2) mean计算均值

mean 方法用来计算均值,通过axis设置按行、按列还是按整体计算。
In [6]: np.mean(a,axis=0)  # 按行取均值
Out[6]: array([4., 5., 6.])
In [7]: np.mean(a,axis=1)  # 按列取均值
Out[7]: array([2., 5., 8.])
In [8]: np.mean(a,axis=None)  # 按整体取均值
Out[8]: 5.0 

3)  var计算方差

var 方法用来计算方差,通过axis设置按行、按列还是按整体计算。
In [9]: np.var(a,axis=0)  # 按行取方差
Out[9]: array([6., 6., 6.])
In [10]: np.var(a,axis=1)  # 按列取方差
Out[10]: array([0.66666667, 0.66666667, 0.66666667])
In [11]: np.var(a,axis=None)  # 按整体取方差
Out[11]: 6.666666666666667

4) 计算标准差

std 方法用来计算标准差,通过axis设置按行、按列还是按整体计算。
In [12]: np.std(a,axis=0)  # 按行取标准差
Out[12]: array([2.44948974, 2.44948974, 2.44948974])
In [13]: np.std(a,axis=1)  # 按列取标准差
Out[13]: array([0.81649658, 0.81649658, 0.81649658])
In [14]: np.std(a,axis=None)  # 按整体取标准差
Out[14]: 2.581988897471611

3. 数据分布密度相关函数

Numpy 中提供了计算密度的相关函数。数据的密度可以帮助我们很好地理解数组的大致分布。简单来说就是看哪些数值出现的次数比较多,数值大部分集中分布在哪个区间。示例代码如下。
In [1]: import numpy as np
In [2]: np.bincount([1,2,2,4,5])  # 计数
Out[2]: array([0, 1, 2, 0, 1, 1], dtype=int64)
In [3]: np.histogram([1,2,2,4,5])  # 计数
Out[3]: 
(array([1, 0, 2, 0, 0, 0, 0, 1, 0, 1], dtype=int64),
array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ]))

4. 判断数组相关性函数

Numpy 中提供了计算序列相关性的相关函数。相关性可以帮助我们理解两个数组是否具有一定的一致性。示例代码如下。
In [1]: import numpy as np
In [2]: a=np.array([[1,3,3],
   ...:             [3,2,1]])
In [3]: np.cov(a)  # 计算协方差
Out[3]: 
array([[ 1.33333333, -1.        ],
       [-1.        ,  1.        ]])
In [4]: np.corrcoef(a)  # 计算协方差系数
Out[4]: 
array([[ 1.       , -0.8660254],
       [-0.8660254,  1.       ]]) 

优秀文章