NumPy - 统计函数
NumPy 中的统计函数
NumPy 提供了丰富的统计函数,可用于对数组执行各种统计计算。这些函数可以计算平均值、中位数、方差、标准差、最小值、最大值等指标。
NumPy 的 amin() 和 amax() 函数
numpy.amin() 函数返回给定数组中沿指定轴的元素的最小值。而 numpy.amax() 函数则返回给定数组中沿指定轴的元素的最大值。
示例
以下示例演示了如何在 NumPy 数组上使用 amin() 和 amax() 函数 -
import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print('我们的数组是:') print(a) print(' ') print('调用 amin() 函数:') print(np.amin(a,1)) print(' ') print('再次调用 amin() 函数:') print(np.amin(a,0)) print(' ') print('调用 amax() 函数:') print(np.amax(a)) print(' ') print('再次调用 amax() 函数:') print(np.amax(a, axis=0))
它将产生以下输出 -
我们的数组是: [[3 7 5] [8 4 3] [2 4 9]] 调用 amin() 函数:[3 3 2] 再次调用 amin() 函数:[2 4 3] 调用 amax() 函数:9 再次调用 amax() 函数:[8 7 9]
numpy.ptp() 函数
numpy.ptp() 函数返回范围(最大值 -沿轴计算值的最小值。
示例
在下面的示例中,我们使用 ptp() 函数计算 NumPy 数组中值的范围 -
import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print('我们的数组是:') print(a) print(' ') print('调用 ptp() 函数:') print(np.ptp(a)) print(' ') print('沿轴 1 调用 ptp() 函数:') print(np.ptp(a, axis=1)) print(' ') print('调用沿轴 0 调用 ptp() 函数:') print(np.ptp(a, axis=0))
以下是得到的输出 −
我们的数组是: [[3 7 5] [8 4 3] [2 4 9]] 调用 ptp() 函数:7 沿轴 1 调用 ptp() 函数:[4 5 7] 沿轴 0 调用 ptp() 函数:[6 3 6]
numpy.percentile() 函数
百分位数(或百分位数)是统计学中使用的一种度量,表示一组观测值中给定百分比的观测值低于该值。
numpy.percentile() 函数计算数据沿指定轴的第 q 个百分位数。它采用以下参数 -
numpy.percentile(a, q, axis)
其中:
- a: 输入数组。
- q: 需要计算的百分位数,必须介于 0-100 之间。
- axis: 计算百分位数的轴。
示例
在此示例中,我们使用 percentile() 函数计算 NumPy 数组的第 50 个百分位数(中位数)-
import numpy as np a = np.array([[30,40,70],[80,20,10],[50,90,60]]) print('我们的数组是:') print(a) print(' ') print('调用 percentile() 函数:') print(np.percentile(a,50)) print(' ') print('沿轴 1 调用 percentile() 函数:') print(np.percentile(a,50, axis=1)) print(' ') print('沿轴 0 调用 percentile() 函数:') print(np.percentile(a,50, axis=0))
这将产生以下结果 -
我们的数组是: [[30 40 70] [80 20 10] [50 90 60]] 调用 percentile() 函数:50.0 沿轴 1 调用 percentile() 函数:[40. 20. 60.] 沿轴 0 应用 percentile() 函数:[50. 40. 60.]
数组元素的和与积
numpy.sum() 函数计算数组中所有元素的和,而 numpy.prod() 函数计算数组中所有元素的乘积。
示例
在下面的示例中,我们使用 sum() 和 prod() 函数计算 NumPy 数组中元素的和与乘积 -
import numpy as np # 创建一个 NumPy 数组 data = np.array([1, 2, 3, 4]) # 计算数组的和 sum_value = np.sum(data) # 计算数组的乘积 prod_value = np.prod(data) print(f"数组的和:{sum_value}") print(f"数组的乘积:{prod_value}")
它将产生以下输出 -
数组的和:10 数组的乘积:24
numpy.median() 函数
numpy.median() 函数计算沿指定轴的中位数。如果未指定轴,则计算展平数组的中位数。中位数定义为分隔数据样本上半部分和下半部分的值。
示例
在下面的示例中,我们使用 median() 函数查找 NumPy 数组中元素的中位数 -
import numpy as np a = np.array([[30,65,70],[80,95,10],[50,90,60]]) print('我们的数组是:') print(a) print(' ') print('调用 median() 函数:') print(np.median(a)) print(' ') print('沿轴 0 调用 median() 函数:') print(np.median(a, axis=0)) print(' ') print('沿轴 1 调用 median() 函数:') print(np.median(a, axis=1))
以下是上述代码的输出 -
我们的数组是: [[30 65 70] [80 95 10] [50 90 60]] 调用 median() 函数:65.0 沿轴 0 调用 median() 函数:[50. 90. 60.] 沿轴 1 调用 median() 函数:[65. 80. 60.]
numpy.mean() 函数
numpy.mean() 函数返回数组中元素的算术平均值。如果没有指定轴,则计算扁平数组的平均值。算术平均值是沿某个轴的元素之和除以元素数量。
示例
在下面的示例中,我们使用 mean() 函数计算 NumPy 数组中元素的平均值 -
import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print('我们的数组是:') print(a) print(' ') print('调用 mean() 函数:') print(np.mean(a)) print(' ') print('沿 0 轴调用 mean() 函数:') print(np.mean(a, axis=0)) print(' ') print('沿轴 1 应用 mean() 函数:') print(np.mean(a, axis=1))
得到的输出如下所示 -
我们的数组是: [[1 2 3] [3 4 5] [4 5 6]] 应用 mean() 函数:3.666666666666665 沿轴 0 应用 mean() 函数:[2.66666667 3.66666667 4.66666667] 沿轴 1 应用 mean() 函数:[2. 4. 5.]
numpy.average() 函数
numpy.average() 函数根据数组中元素各自的权重计算它们的加权平均值。加权平均值是将每个元素乘以一个因子得到的平均值。
示例
在下面的示例中,我们使用 average() 函数(带权重和不带权重)计算 NumPy 数组中元素的平均值 -
import numpy as np a = np.array([1,2,3,4]) print('我们的数组是:') print(a) print(' ') print('不带权重调用 average() 函数:') print(np.average(a)) print(' ') wts = np.array([4,3,2,1]) print('带权重调用 average() 函数:') print(np.average(a,weights=wts)) print(' ') print('权重总和') print(np.average([1,2,3,4],weights=[4,3,2,1], returned=True))
它将产生以下输出 −
我们的数组是:[1 2 3 4] 不带权重调用 average() 函数:2.5 调用 average()带权重的函数:2.0 权重和 (2.0, 10.0)
numpy.std() 函数
numpy.std() 函数返回数组中元素的标准差。 标准差是与均值的平方差的平均值的平方根,即 std = sqrt(mean(abs(x - x.mean())**2))。
示例
在下面的示例中,我们使用 std() 函数计算 NumPy 数组的标准差 -
import numpy as np print(np.std([1,2,3,4]))
执行上述代码后,我们得到以下输出 -
1.118033988749895
numpy.var() 函数
numpy.var() 函数返回数组中元素的方差。方差是方差的平均值,即 var = mean(abs(x - x.mean())**2)。
示例
在以下示例中,我们使用 var() 函数计算 NumPy 数组的方差 -
import numpy as np print(np.var([1,2,3,4]))
我们得到如下所示的输出 -
1.25
相关系数
numpy.corrcoef() 函数返回输入数组的皮尔逊相关系数。它对于确定两个变量之间的关系非常有用。
示例
在下面的示例中,我们使用 corrcoef() 函数计算两个数组的相关系数矩阵 -
import numpy as np # 定义两个数组 data1 = np.array([1, 2, 3, 4, 5]) data2 = np.array([5, 4, 3, 2, 1]) # 计算相关系数 corr_coef = np.corrcoef(data1, data2) print("相关系数矩阵:") print(corr_coef)
结果如下所示 -
相关系数矩阵: [[ 1. -1.] [-1. 1.]]
统计函数
以下是 Numpy 中不同的统计函数 -
序号 | 函数及说明 |
---|---|
1 |
amin()
返回数组的最小值或沿某个轴的最小值 |
2 |
amax()
返回数组的最大值或沿某个轴的最大值 |
3 |
nanmin()
返回数组的最小值或沿某个轴的最小值,忽略任何 NaN |
4 |
nanmax()
返回数组的最大值或沿某个轴的最大值,忽略任何 NaN |
5 |
ptp()
沿某个轴的值范围(最大值 - 最小值)
|
6 |
percentile()
计算数据沿指定轴的第 q 个百分位数
|
7 |
nanpercentile()
计算数据沿指定轴的第 q 个百分位数,同时忽略 nan 值 |
8 |
quantile()
计算数据沿指定轴的第 q 个分位数 |
9 |
nanquantile()
计算数据沿指定轴的第 q 个分位数指定的轴,同时忽略 nan 值。返回数组元素的第 q 个分位数 |
10 |
median()
沿指定轴计算中位数 |
11 |
average()
沿指定轴计算加权平均值 |
12 |
mean()
沿指定轴 |
13 |
std()
计算指定轴的标准差 |
14 |
var()
计算指定轴的方差 |
15 |
nanmean()
计算指定轴的算术平均值,忽略NaN |
16 |
nanstd()
计算指定轴的标准差,同时忽略 NaN |
17 |
nanvar()
计算指定轴的方差,同时忽略 NaN |