在应用NumPy的各种场景中,除了之前提到的使用逻辑运算进行数据的筛选之外,最常见的就是进行数据的统计分析了。本文就来简单介绍下NumPy所支持的常见的统计运算,以及在多维数组的统计运算中,无法回避的“轴”的概念。
本文的主要内容有:
1、ndarray中常见的统计运算
2、利用轴axis参数实现更灵活的统计
3、argmax()与argmin()函数的使用
ndarray中常见的统计运算NumPy中的ndarray支持各种常见的统计运算,按照官方文档的描述,可以将这些统计运算分为4类。需要说明的是,同其他函数类似,大部分统计函数都有另种使用方法:
1)通过np.xxx(data)函数的形式进行使用
2)通过ndarray.xxx()方法的形式进行使用
1、顺序相关的统计
对几个常见的函数稍作解释:
1)np.ptp()函数:用于计算数组中的最大值和最小值的差值,可以简单估计数据的范围和浮动情况。
2)np.percentile()函数:用于计算给定数据集的百分位数。
所谓百分位数是指将数据集按照升序进行排列后,把它分成100个相等部分的位置。换句话说,百分位数是指在样本中,有多少百分比的数据点小于或等于该值。
函数中最关键的参数q,就是要就算的百分位数,取值范围为0到100.
3)np.quantile()函数:用于计算给定数据集的分位数。
所谓分位数是指将数据集按照升序排列后,把它分成n个相等部分的位置。
与percentile()函数的不同是,quantile()函数的参数是分位数的比例,而不再是百分比。
函数中最关键的参数q,就是要计算的分位数,取值范围为0到1,比如0.25就表示25%分位数。
下面通过代码,简单演示下这三个常用函数的使用:
2、平均值与方差相关
对几个常用的函数简单解释一下:
1)np.median()函数:用于计算数据集的中位数。
2)np.mean()函数:用于计算数据集的算术平均值
3)np.average()函数:用于计算数据集的加权平均值
4)np.std()函数:用于计算数据集的标准差,标准差是方差的平方根。
5)np.var()函数:用于计算数据集的方差。
接下来,通过代码演示这几个常用函数的使用:
3、相关性的统计
相关性的统计,一般是两个或者多个数据集之间的统计运算,用于帮助我们了解变量之间的关系,以了解他们是如何相互影响。
1)np.corrcoef()函数:用于计算两个变量或者多个变量之间的相关系数矩阵。
其中,相关系数的值在-1到1之间,表示变量之间线性关系的强度和方向。
2)np.cov()函数:用于计算两个或者多个变量之间的协方差矩阵。
协方差矩阵提供了变量之间的线性关系的方向和强度信息。
3)np.correlate()函数:用于计算两个一维数组的相关性,常用于信号处理和统计分析,帮助我们理解两个序列之间的相似性或相关性。
同样,通过代码简单演示下这几个函数的使用:
4、分布的统计
关于数据分布的统计函数,常用的有如下几个:
1)np.histogram()函数:用于计算数据的直方图,返回数据的频数和对应的区间(bins)。
2)np.bincount()函数:用于计算非负证书数组中的每个整数出现的次数。返回一个数组,数组的索引对应输入数组中的整数值,数组的元素对应整数的出现次数。
3)np.digitize()函数:用于将输入数组中的元素分配到指定的区间(bins)。返回一个数组,表示每个输入值属于哪个区间。
通过代码演示这几个函数的使用:
首先是直方图:
然后是分别计算非负整数的出现的频数,以及每个数据元素所属的统计区间:
利用轴axis参数实现更灵活的统计上面演示这些统计函数时,其实没有考虑数组的形状,都是将数组中的所有数据进行统一处理。其实,更多场景中,我们需要将数据按照不同的轴axis进行统计。
下面,通过一个二维数组的最大值、最小值的统计,简单演示下轴的使用。
通过上述代码创建了一个形状为(3, 2)的二维数组:
如果我们对该数组进行索引、切片,可以如下图所示:
当我们不考虑数组的形状,直接用上面的统计函数,直接对整个数组进行统计时,如下图所示:
由于这是一个二维数组,更加常见的统计需求,可能是统计每一行的最大值、最小值,或者统计每一列的最大值、最小值等。
可以通过如下代码演示,按照轴进行的统计运算:
实际执行的效果如下图所示:
所谓axis参数,在这里是指统计计算执行的方向。所以:
当axis=0时,表示在第0轴的方向上进行统计,在二维数组中就是按照列进行统计了。
当axis=1时,表示在第1轴的方向上进行统计,在二维数组中就是按照行进行统计了。
在NumPy的不同使用场景中,关于轴的含义,有时候可能容易引起混淆,其实,只要多使用,或者将函数结果输出,以验证对应函数的axis的含义,即可避免错误。所以,也不需要进行强行记忆。
argmax()与argmin()函数的使用在实际统计中,还有一种场景比较常见,就是我们有时不仅要获取最大值或者最小值,更多的是想知道最大值或最小值的位置。
我们可以通过argmax()和argmin()这两个函数来实现这种需求。
下面通过代码简单演示,首先看一维数组中的使用:
然后看下二维数组中的使用:
总结本文简单介绍了NumPy中支持的四类统计相关的函数,分别是:顺序相关的统计函数、均值方差相关的统计函数、相关性相关的统计函数、分布相关的统计函数。同时介绍了轴的概念以及按照轴axis进行统计的不同。最后介绍了argmax()和argmin()函数的使用。
以上就是本文的全部内容了,感谢您的拨冗阅读!