NumPy 是 Python 科学计算的基础包。除去三角、算术函数等基础函数,基本的统计函数是必不可少的。
NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。

1、最大最小及相关函数
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
numpy.ptp() 函数计算数组中元素最大值与最小值的差(最大值 – 最小值)
a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]]) print("a = ", a) # 求列最大 print("np.amax(a, 0) = ", np.amax(a, 0)) # 求行最大 print("np.amax(a, 1) = ", np.amax(a, 1)) # 求行最小 print("np.amin(a, 1) = ", np.amin(a, 1)) # numpy.ptp()函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。 # 所有元素最大-最小 print("np.ptp(a) = ", np.ptp(a)) # 按行/x轴/1轴求 最大-最小 print("np.ptp(a, 1) = ", np.ptp(a, 1)) # 按列/y轴/0轴 最大 -最小 print("np.ptp(a, 0) = ", np.ptp(a, 0))
a = [[3 7 5] [8 4 3] [2 4 9]] np.amax(a, 0) = [8 7 9] np.amax(a, 1) = [7 8 9] np.amin(a, 1) = [3 3 2] np.ptp(a) = 7 np.ptp(a, 1) = [4 5 7] np.ptp(a, 0) = [6 3 6]
2、百分比函数
np.percentile(a, q,axis)百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。
numpy.median() 函数用于计算数组 a 中元素的中位数(中值
# a: 输入数组 # q: 要计算的百分位数,在 0 ~ 100 之间 # axis: 沿着它计算百分位数的轴 print("np.percentile(a, 70) =", np.percentile(a, 70)) print("np.percentile(a, 50, 1) =", np.percentile(a, 50, 1)) print("np.percentile(a, 50, 0) =", np.percentile(a, 50, 0)) # numpy.median() 函数用于计算数组 a 中元素的中位数(中值) print("np.median(a) = ", np.median(a)) print("np.median(a, 1) = ", np.median(a, 1)) print("np.median(a, 0) = ", np.median(a, 0))
a = [[3 7 5] [8 4 3] [2 4 9]] np.percentile(a, 70) = 6.199999999999999 np.percentile(a, 50, 1) = [5. 4. 4.] np.percentile(a, 50, 0) = [3. 4. 5.] np.median(a) = 4.0 np.median(a, 1) = [5. 4. 4.] np.median(a, 0) = [3. 4. 5.]
3、均值、方差
numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。
# 算术平均值是沿轴的元素的总和除以元素的数量。 print("np.mean(a) = ", np.mean(a)) print("np.mean(a, 1) =", np.mean(a, 1)) print("np.mean(a, 0) = ", np.mean(a, 0)) # numpy.average() 该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。 # 如果没有轴参数,权重元素个数必须与数组展开后元素的个数相同,否则会报错 # 数组[1,2,3,4]和相应的权重[4,3,2,1],通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。 # 加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1) # 不指定权重时相当于 mean 函数 # 如果 returned 参数设为 true,则返回权重的和 print(np.average(a)) print(np.average(a, weights=np.array([4, 3, 2]), axis=1, returned=True)) # 标准差是一组数据平均值分散程度的一种度量。 # 标准差是方差的算术平方根。标准差公式如下: # 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。 print(np.std([1, 2, 3, 4])) # 统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。 # 换句话说,标准差是方差的平方根。 print(np.var([1, 2, 3, 4]))
a = [[3 7 5] [8 4 3] [2 4 9]] np.mean(a) = 5.0 np.mean(a, 1) = [5. 5. 5.] np.mean(a, 0) = [4.33333333 5. 5.66666667] 5.0 (array([4.77777778, 5.55555556, 4.22222222]), array([9., 9., 9.])) 1.118033988749895 1.25