第 85 天:NumPy 统计函数

简介: 第 85 天:NumPy 统计函数

数学统计在我们的程序当中特别是数据分析当中是必不可少的一部分,本文就来介绍一下 NumPy 常见的统计函数。

 

最大值与最小值

 

numpy.amin()

 

用于计算数组中的元素沿指定轴的最小值。

 

可以通过 axis 参数传入坐标轴来指定统计的轴,当指定 axis 时,axis 的范围为ndarray 的维度范围,可以利用 shape 函数获取ndrray 的维度。我们来看例子:

 

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')

print(np.char.center('最小值', 15, '*'))print("所有维度的最小值:")print(np.amin(a))print('\n')print("0轴的最小值:")print(np.amin(a, 0))print('\n')print("1轴的最小值:")print(np.amin(a, 1))print('\n')

# 返回初始数组:[[1 2 3] [4 5 6] [7 8 9]]******最小值******所有维度的最小值:10轴的最小值:[1 2 3]1轴的最小值:[1 4 7]

 

我们例子中使用的是二维数组,所以 axis 只有取01两个值。其实我们还可以用 numpy.min()来计算,效果是一样的,只不过 NumPy 的官方文档上没有写 numpy.min()这个方法,看源码我们知道这个方法其实是numpy.amin()的别名。

 

numpy.amax()

 

用于计算数组中的元素沿指定轴的最大值。

 

可以通过 axis 参数传入坐标轴来指定统计的轴,当指定 axis 时,axis 的范围为ndarray 的维度范围,可以利用 shape 函数获取ndrray 的维度。我们来看例子:

 

 

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')

print(np.char.center('最大值', 15, '*'))print("所有维度的最大值:")print(np.amax(a))print('\n')print("0轴的最大值:")print(np.amax(a, 0))print('\n')print("1轴的最大值:")print(np.amax(a, 1))print('\n')

# 返回初始数组:[[1 2 3] [4 5 6] [7 8 9]]******最大值******所有维度的最大值:90轴的最大值:[7 8 9]1轴的最大值:[3 6 9]

 

这个函数和 numpy.amin()函数是相反的含义,也可以用 numpy.max()来计算。

 

numpy.ptp()

 

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

 

实例:

 

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')

print(np.char.center('最大值与最小值的差', 15, '*'))print("所有维度的极差:")print(np.ptp(a))print('\n')print("0轴的极差:")print(np.ptp(a, 0))print('\n')print("1轴的极差:")print(np.ptp(a, 1))print('\n')

# 返回***最大值与最小值的差***所有维度的极差:80轴的极差:[6 6 6]1轴的极差:[2 2 2]

 

这个方法可以迅速的找出数组中任何维度的最大最小值之差,还是很方便的。

 

中位数

 

numpy.percentile()

 

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

numpy.percentile(a, q, axis) 接收以下参数:

a: 输入数组

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

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

 

 

这个百分位怎么理解呢?

 

例如第60个百分位是这样一个值,它使得至少有60%的数据项小于或等于这个值,且至少有40%的数据项大于或等于这个值。

 

我们来看看实例:

 

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')

print(np.char.center('百分位数', 15, '*'))print("50%的分位数,即数组排序之后的中位数:")print(np.percentile(a, 50))print('\n')print("0轴的中位数:")print(np.percentile(a, 50, 0))print('\n')print("1轴的中位数:")print(np.percentile(a, 50, 1))print('\n')

# 返回******百分位数*****50%的分位数,即数组排序之后的中位数:5.00轴的中位数:[4. 5. 6.]1轴的中位数:[2. 5. 8.]

 

numpy.median()

 

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

我们来看实例:

 

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')

print(np.char.center('计算中位数', 15, '*'))print("所有元素的中位数:")print(np.median(a))print('\n')print("0轴的中位数:")print(np.median(a, 0))print('\n')print("1轴的中位数:")print(np.median(a, 1))print('\n')

# 返回*****计算中位数*****所有元素的中位数:5.00轴的中位数:[4. 5. 6.]1轴的中位数:[2. 5. 8.]

 

总数与均值

 

 

numpy.sum()

 

用于按指定轴计算数组中的元素的和。

实例:

 

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')

print(np.char.center('求和', 15, '*'))print("所有维度的和:")print(np.sum(a))print('\n')print("0轴求和:")print(np.sum(a, 0))print('\n')print("1轴求和:")print(np.sum(a, 1))print('\n')

# 返回*******求和******所有维度的和:450轴求和:[12 15 18]1轴求和:[ 6 15 24]

 

不管按哪个维度求和,得出的结果再相加肯定等于所有维度求和的结果。

 

numpy.mean()

 

按轴计算数组中元素的算术平均值。

 

算术平均值是沿轴的元素的总和除以元素的数量。我们来看实例:

 

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')

print(np.char.center('计算算术平均值', 15, '*'))print("所有元素的算术平均值:")print(np.mean(a))print('\n')print("0轴的算术平均值:")print(np.mean(a, 0))print('\n')print("1轴的算术平均值:")print(np.mean(a, 1))print('\n')

# 返回****计算算术平均值****所有元素的算术平均值:5.00轴的算术平均值:[4. 5. 6.]1轴的算术平均值:[2. 5. 8.]

 

numpy.average()

 

根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值,该函数可以接收一个轴参数,如果没有指定轴,则数组会被展开。

 

加权平均值是由每个分量乘以权重因子得到的平均值。即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。

 

举个例子:数组[1, 2, 3, 4]对应的权重是[4 3 2 1],那么加权平均值的计算公式为:

 

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

实例:

import numpy as np

print(np.char.center('加权平均值', 15, '*'))b = np.array([1, 2, 3, 4])print("所有元素的加权平均值(不指定权重相当于求平均值):")print(np.average(b))print('\n')print("指定权重的加权平均值:")print(np.average(b, weights=[4, 3, 2, 1]))print('\n')print("指定权重的加权平均值以及权重的和:")print(np.average(b, weights=[4, 3, 2, 1], returned=True))print('\n')

# 返回*****加权平均值*****所有元素的加权平均值(不指定权重相当于求平均值):2.5指定权重的加权平均值:2.0指定权重的加权平均值以及权重的和:(2.0, 10.0)

 

我们可以通过returned参数来设置是否返回权重的和。在上例中,权重数组中元素相加等于10

 

方差与标准差

 

numpy.var()

 

计算数组中元素的方差

 

 

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。计算公式为:

 

mean((x - x.mean())** 2)

我们来看实例

·      

import numpy as np

print(np.char.center('计算方差', 15, '*'))print(np.var([1, 2, 3, 4]))print('\n')

# 返回******计算方差*****1.25

numpy.std()

计算数组中袁术的标准差

标准差是一组数据平均值分散程度的一种度量,是方差的算术平方根。标准差公式如下:

std = sqrt(mean((x - x.mean())**2))

我们来看实例:

 

import numpy as np

print(np.char.center('计算标准差', 15, '*'))print(np.std([1, 2, 3, 4]))print('\n')

# 返回*****计算标准差*****1.118033988749895

 

总结

 

本文向大家介绍了 NumPy 的统计函数,包括最大最小值函数、总数与均值函数、中位数函数以及方差与标准差函数。这些函数主要运用在一些数据分析的统计工作中,我们可以不用实现这些统计方法的原理而直接使用函数,使我们的代码简洁而高效。

 

参考

https://numpy.org/devdocs/reference/routines.statistics.html

文中示例代码:python-100-days

 

目录
相关文章
|
2月前
|
Python
NumPy 教程 之 NumPy 统计函数 9
NumPy提供了多种统计函数,如计算数组中的最小值、最大值、百分位数、标准差及方差等。其中,标准差是一种衡量数据平均值分散程度的指标,它是方差的算术平方根。例如,对于数组[1,2,3,4],其标准差可通过计算各值与均值2.5的差的平方的平均数的平方根得出,结果为1.1180339887498949。示例代码如下: ```python import numpy as np print(np.std([1,2,3,4])) ``` 运行输出即为:1.1180339887498949。
117 50
|
1月前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
25 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
2月前
|
Python
NumPy 教程 之 NumPy 统计函数 10
NumPy统计函数,包括查找数组中的最小值、最大值、百分位数、标准差和方差等。方差表示样本值与平均值之差的平方的平均数,而标准差则是方差的平方根。例如,`np.var([1,2,3,4])` 的方差为 1.25。
100 48
|
2月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 8
NumPy提供了多种排序方法,包括快速排序、归并排序及堆排序,各有不同的速度、最坏情况性能、工作空间和稳定性特点。此外,NumPy还提供了`numpy.extract()`函数,可以根据特定条件从数组中抽取元素。例如,在一个3x3数组中,通过定义条件选择偶数元素,并使用该函数提取这些元素。示例输出为:[0., 2., 4., 6., 8.]。
26 8
|
2月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 2
介绍NumPy` 中的排序方法与条件筛选函数。通过对比快速排序、归并排序及堆排序的速度、最坏情况性能、工作空间需求和稳定性,帮助读者选择合适的排序算法。此外,还深入讲解了 `numpy.argsort()` 的使用方法,并通过具体实例展示了如何利用该函数获取数组值从小到大的索引值,并据此重构原数组,使得其变为有序状态。对于学习 `NumPy` 排序功能来说,本教程提供了清晰且实用的指导。
33 7
|
2月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 5
NumPy中的排序方法及特性对比,包括快速排序、归并排序与堆排序的速度、最坏情况性能、工作空间及稳定性分析。并通过`numpy.argmax()`与`numpy.argmin()`函数演示了如何获取数组中最大值和最小值的索引,涵盖不同轴方向的操作,并提供了具体实例与输出结果,便于理解与实践。
23 4
|
2月前
|
算法 索引 Python
Numpy 的一些以 arg 开头的函数
Numpy 的一些以 arg 开头的函数
40 0
|
3月前
|
索引 Python
NumPy 教程 之 NumPy 统计函数 8
这段内容介绍了 NumPy 中的 `numpy.average()` 函数,该函数用于计算数组中元素的加权平均值。可以通过设置 `axis` 参数指定计算的轴,`weights` 参数用于指定权重,默认为等权重。示例展示了如何在一维和多维数组中使用此函数,并通过 `returned=True` 返回加权平均值和权重总和。
25 1
|
2月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 4
NumPy提供了多种排序方法,包括快速排序、归并排序及堆排序等,具有不同的执行速度、最坏情况性能、工作空间需求及稳定性特征。教程涵盖了`msort`、`sort_complex`、`partition`和`argpartition`等函数的使用方法,并通过实例展示了复数排序与分区排序的应用。例如,`np.sort_complex()`用于复数排序,`np.partition()`实现基于指定位置的分区排序,而`argpartition()`则帮助快速找到数组中的特定值。
12 0
|
2月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
74 0