Numpy常用统计函数(附带实例)
NumPy求最大最小值
在 NumPy 中,提供了 amin() 和 amax() 函数用于求数组的最小值和最大值,函数的格式为:- numpy.amin():用于计算数组中的元素沿指定轴的最小值;
- numpy.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 中,提供了相应函数用于计算数组的中值、平均值、加权平均值等,格式如下:- numpy.median():中值是一组数值中,排在中间位置的值,可以指定轴方向;
- numpy.mean():计算数组的平均值,可以指定轴方向;
- numpy.average():计算数组的加权平均值,权重用另一个数组表示,并作为参数传入,可以指定轴方向。
考虑一个数组 [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