购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 NumPy统计函数

NumPy提供了很多统计函数,用于从数组中查找最小元素、最大元素、百分位标准差和方差等。

1.最大最小值

在NumPy中,提供了amin()和amax()函数用于求数组的最小值和最大值,函数的格式为:

numpy.amin():用于计算数组中的元素沿指定轴的最小值。

numpy.amax():用于计算数组中的元素沿指定轴的最大值。

【例2-40】 利用amin()和amax()函数分别求数组的最小值和最大值。

运行程序,输出如下:

     原始数组:
     [[   2   -10    20]
      [  80     42   31]
      [  22     33   10]]
     数组中最小元素:-10
     数组中最大元素:80
     数组列中最小元素:[     2  -10    10]
     数组列中最大元素:[    80     42  31]
     数组行中最小元素:[-10        31  10]
     数组行中最大元素:[    20     80  33]

2.ptp()函数

numpy.ptp()返回数组某个轴方向的峰间值,即最大值最小值之差。

【例2-41】 利用ptp()函数返回数组的峰间值。

运行程序,输出如下:

     原始数组:
     [[ 2  -10    20]
      [80     42  31]
      [22     33  10]]
     轴1峰间值:[30 49 23]
     轴0峰间值:[78 52 21]

3.percentile()函数

percentile()函数用于计算数组的百分位数,百分位数是统计中使用的度量,表示小于这个值的观察值占总数的百分比。

例如,第80个百分位数是这样一个值,它使得至少有80%的数据项小于或等于这个值,且至少有(100-80)%的数据项大于或等于这个值。函数格式为:

numpy.percentile(input,q,axis):参数input为输入数组;q为要计算的百分位数,范围为0~100;axis为计算百分位数的轴方向,二维取值0,1。

【例2-42】 利用percentile()函数计算数组的百分位数。

运行程序,输出如下:

     数组是:
     [[9 7 4]
      [10 2 1]]
     调用pe r cen t i l e()函数:
     5.5
     [9.5 4.5 2.5]
     [7.2.]
     [[7.]
      [2.]]

4.计算数组项的中值、平均值、加权平均值

在Num Py中,提供了相应函数用于计算数组的中值、平均值、加权平均值等,格式如下:

numpy.median():中值是一组数值中,排在中间位置的值,可以指定轴方向。

numpy.mean():计算数组的平均值,可以指定轴方向。

numpy.average():计算数组的加权平均值,权重用另一个数组表示,并作为参数传入,可以指定轴方向。

考虑一个数组[1,2,3,4]和相应的权值[4,3,2,1],通过将对应元素的乘积相加,再除以权值的和来计算加权平均值。

加权平均值=(14+23+32+41)/(4+3+2+1)

【例2-43】 利用相应函数计算数组项的中值、平均值和加权平均值。

运行程序,输出如下:

     原始数组:
      [[1 4 7]
      [2 5 8]
      [3 6 9]]
     轴0中值:[2.5.8.]
     轴0平均值:[2.5.8.]
     轴1加权平均值:[7.8.9.]

5.标准差与方差

在NumPy中,提供了std()函数用于计算数组的标准差。标准差是一组数据平均值分散程度的一种度量。标准差是方差的算术平方根。

标准差公式为:std=sqrt(mean((x-x.mean())**2))

如果数组是[1,2,3,4],则其平均值为2.5。因此,差的平方是[2.25,0.25,0.25,2.25],再求其平均值的平方根除以4,即sqrt(5/4),结果为1.1180339887498949。

在NumPy中,提供了var()函数计算数组中的方差。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即mean((x-x.mean())**2)。

换句话说,标准差是方差的平方根。

【例2-44】 计算数组的标准差和方差。

     import numpy as np
     print("数组的标准差:\n")
     print(np.s t d([1,4,3,6]))
     print("数组的方差:\n")
     print(np.s t d([1,4,3,6]))

运行程序,输出如下: QLMasrZKzjjDSqSxCKpHswS7D9pCEsjgzTSCT2JkaSJ7soCPnE3SH7sS57JhCP3+

     数组的标准差:
     1.8027756377319946
     数组的方差:
     1.8027756377319946
点击中间区域
呼出菜单
上一章
目录
下一章
×