NumPy 教程(第 16 章):统计函数

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

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

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

示例:

In [1]: import numpy as np

In [2]: num = np.array([[3,7,5],[8,4,3],[2,4,9]])

In [3]: num
Out[3]:
array([[3, 7, 5],
       [8, 4, 3],
       [2, 4, 9]])

In [4]: np.amin(num, 1)
Out[4]: array([3, 3, 2])

In [5]: np.amin(num, 0)
Out[5]: array([2, 4, 3])

In [6]: np.amin(num)
Out[6]: 2

In [7]: np.amax(num)
Out[7]: 9

In [8]: np.amax(num, axis=0)
Out[8]: array([8, 7, 9])

numpy.ptp() 函数

计算数组中元素最大值与最小值的差(最大值 - 最小值)

In [1]: import numpy as np

In [2]: num = np.array([[3,7,5],[8,4,3],[2,4,9]])

In [3]: num
Out[3]:
array([[3, 7, 5],
       [8, 4, 3],
       [2, 4, 9]])

In [4]: np.ptp(num)
Out[4]: 7

In [5]: np.ptp(num, axis=1)
Out[5]: array([4, 5, 7])

In [6]: np.ptp(num, axis=0)
Out[6]: array([6, 3, 6])

numpy.percentile() 函数

百分位数是统计中使用的度量,表示小于这个值的观察值的百分比,

numpy.percentile(a, q, axis)

参数说明:

  • a: 输入数组

  • q: 要计算的百分位数,在 0 ~ 100 之间

  • axis: 沿着它计算百分位数的轴

首先明确百分位数:

第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值

In [1]: import numpy as np

In [2]: num = np.array([[10, 7, 4], [3, 2, 1]])

In [3]: num
Out[3]:
array([[10,  7,  4],
       [ 3,  2,  1]])

In [4]: np.percentile(num, 50)
Out[4]: 3.5

In [5]: np.percentile(num, 50, axis=0)
Out[5]: array([6.5, 4.5, 2.5])

In [6]: np.percentile(num, 50, axis=1)
Out[6]: array([7., 2.])

In [7]: np.percentile(num, 50, axis=1, keepdims=True)
Out[7]:
array([[7.],
       [2.]])

numpy.median() 函数

用于计算数组 a 中元素的中位数(中值)

In [1]: import numpy as np

In [2]: num = np.array([[30,65,70],[80,95,10],[50,90,60]])

In [3]: num
Out[3]:
array([[30, 65, 70],
       [80, 95, 10],
       [50, 90, 60]])

In [4]: np.median(num)
Out[4]: 65.0

In [5]: np.median(num, axis=0)
Out[5]: array([50., 90., 60.])

In [6]: np.median(num, axis=1)
Out[6]: array([65., 80., 60.])

numpy.mean() 函数

返回数组中元素的算术平均值。 如果提供了轴,则沿其计算

算术平均值是沿轴的元素的总和除以元素的数量

In [1]: import numpy as np

In [2]: num = np.array([[1,2,3],[3,4,5],[4,5,6]])

In [3]: num
Out[3]:
array([[1, 2, 3],
       [3, 4, 5],
       [4, 5, 6]])

In [4]: np.mean(num)
Out[4]: 3.6666666666666665

In [5]: np.mean(num, axis=0)
Out[5]: array([2.66666667, 3.66666667, 4.66666667])

In [6]: np.mean(num, axis=1)
Out[6]: array([2., 4., 5.])

numpy.average() 函数

根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值

该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开

加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数

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

加权平均值 = (1*4 + 2*3 + 3*2 + 4*1) / (4 + 3 + 2 + 1)

示例:

In [1]: import numpy as np

In [2]: num = np.array([1,2,3,4])

In [3]: num
Out[3]: array([1, 2, 3, 4])

In [4]: np.average(num)
Out[4]: 2.5

In [5]: np.average(num, weights=np.array([4,3,2,1]))
Out[5]: 2.0

In [6]: np.average([1,2,3,4], weights=[4,3,2,1], returned=True)
Out[6]: (2.0, 10.0)

在多维数组中,可以指定用于计算的轴

In [1]: import numpy as np

In [2]: num = np.arange(6).reshape(3,2)

In [3]: num
Out[3]:
array([[0, 1],
       [2, 3],
       [4, 5]])

In [4]: np.average(num, axis=1, weights=np.array([3,5]))
Out[4]: array([0.625, 2.625, 4.625])

In [5]: np.average(num, axis=1, weights=np.array([3,5]), returned=True)
Out[5]: (array([0.625, 2.625, 4.625]), array([8., 8., 8.]))
标准差

标准差是一组数据平均值分散程度的一种度量

标准差是方差的算术平方根,标准差公式如下:

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

In [1]: import numpy as np

In [2]: np.std([1,2,3,4])
Out[2]: 1.118033988749895
方差

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)

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

In [3]: np.var([1,2,3,4])
Out[3]: 1.25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值