首页 > 编程笔记 > Python笔记 阅读:18

Numpy常用统计函数(附带实例)

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

NumPy求最大最小值

在 NumPy 中,提供了 amin() 和 amax() 函数用于求数组的最小值和最大值,函数的格式为:
【实例】利用 amin() 和 amax() 函数分别求数组的最小值和最大值。
import numpy as np
a = np.array([[2, -10, 20], [80, 42, 31], [22, 33, 101]])
print("原始数组:\n")
print(a)
print('\n')
print("数组中最小元素:", np.amin(a))
print("数组中最大元素:", np.amax(a))
print('\n')
print("数组列中最小元素:", np.amin(a, 0))
print("数组列中最大元素:", np.amax(a, 0))
print('\n')
print("数组行中最小元素:", np.amin(a, 1))
print("数组行中最大元素:", np.amax(a, 1))
运行程序,输出如下:

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

NumPy ptp()函数

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

【实例】利用 ptp() 函数返回数组的峰间值。
import numpy as np
a = np.array([[2, -10, 20], [80, 42, 31], [22, 33, 10]])
print("原始数组:\n", a)
print('\n')
print("轴 1 峰间值:", np.ptp(a, 1))
print("轴 0 峰间值:", np.ptp(a, 0))
运行程序,输出如下:

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

NumPy percentile()函数

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

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

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

【实例】利用 percentile() 函数计算数组的百分位数。
import numpy as np
a = np.array([[9, 7, 4], [10, 2, 11]])
print('数组是:')
print(a)
print('调用 percentile() 函数:')
# 50% 的分位数, 就是 a 里排序之后的中位数
print(np.percentile(a, 50))
# axis 为 0, 在纵列上求
print(np.percentile(a, 50, axis=0))
# axis 为 1, 在横行上求
print(np.percentile(a, 50, axis=1))
# 保持维度不变
print(np.percentile(a, 50, axis=1, keepdims=True))
运行程序,输出如下:

数组是:
[[9 7 4]
[10 2 1]]
调用 percentile() 函数:
5.5
[9.5 4.5 2.5]
[7.2.]
[[7.]
[2.]]

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

在 NumPy 中,提供了相应函数用于计算数组的中值、平均值、加权平均值等,格式如下:
考虑一个数组 [1,2,3,4] 和相应的权值 [4,3,2,1] ,通过将对应元素的乘积相加,再除以权值的和来计算加权平均值。

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


【实例】利用相应函数计算数组项的中值、平均值和加权平均值。
import numpy as np
a = np.array([[1, 4, 7], [2, 5, 8], [3, 6, 9]])
print("原始数组:\n", a)
print('\n')
print("轴 0 中值:", np.median(a, 0))
print("轴 0 平均值:", np.mean(a, 0))
wt = np.array([0, 0, 10])
print("轴 1 加权平均值:", np.average(a, 1, weights=wt))
运行程序,输出如下:

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

NumPy标准差与方差

在 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)。换句话说,标准差是方差的平方根。

【实例】计算数组的标准差和方差。
import numpy as np
print("数组的标准差:\n")
print(np.std([1,4,3,6]))
print("数组的方差:\n")
print(np.std([1,4,3,6]))
运行程序,输出如下:

数组的标准差:
1.8027756377319946
数组的方差:
1.8027756377319946

相关文章