「Python数据科学」ndarray的统计运算与“轴”的使用

南宫理的日志录 2024-12-26 08:45:15
引言

在应用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()函数的使用。

以上就是本文的全部内容了,感谢您的拨冗阅读!

0 阅读:6
南宫理的日志录

南宫理的日志录

深耕IT科技,探索技术与人文的交集