NumPy提供了很多统计函数,用于从数组中查找最小元素、最大元素、百分位标准差和方差等。
在NumPy中,提供了amin()和amax()函数用于求数组的最小值和最大值,函数的格式为:
numpy.amin():用于计算数组中的元素沿指定轴的最小值。
numpy.amax():用于计算数组中的元素沿指定轴的最大值。
【例2-40】 利用amin()和amax()函数分别求数组的最小值和最大值。
运行程序,输出如下:
原始数组: [[ 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()返回数组某个轴方向的峰间值,即最大值最小值之差。
【例2-41】 利用ptp()函数返回数组的峰间值。
运行程序,输出如下:
原始数组: [[ 2 -10 20] [80 42 31] [22 33 10]] 轴1峰间值:[30 49 23] 轴0峰间值:[78 52 21]
percentile()函数用于计算数组的百分位数,百分位数是统计中使用的度量,表示小于这个值的观察值占总数的百分比。
例如,第80个百分位数是这样一个值,它使得至少有80%的数据项小于或等于这个值,且至少有(100-80)%的数据项大于或等于这个值。函数格式为:
numpy.percentile(input,q,axis):参数input为输入数组;q为要计算的百分位数,范围为0~100;axis为计算百分位数的轴方向,二维取值0,1。
【例2-42】 利用percentile()函数计算数组的百分位数。
运行程序,输出如下:
数组是: [[9 7 4] [10 2 1]] 调用pe r cen t i l e()函数: 5.5 [9.5 4.5 2.5] [7.2.] [[7.] [2.]]
在Num Py中,提供了相应函数用于计算数组的中值、平均值、加权平均值等,格式如下:
numpy.median():中值是一组数值中,排在中间位置的值,可以指定轴方向。
numpy.mean():计算数组的平均值,可以指定轴方向。
numpy.average():计算数组的加权平均值,权重用另一个数组表示,并作为参数传入,可以指定轴方向。
考虑一个数组[1,2,3,4]和相应的权值[4,3,2,1],通过将对应元素的乘积相加,再除以权值的和来计算加权平均值。
加权平均值=(14+23+32+41)/(4+3+2+1)
【例2-43】 利用相应函数计算数组项的中值、平均值和加权平均值。
运行程序,输出如下:
原始数组: [[1 4 7] [2 5 8] [3 6 9]] 轴0中值:[2.5.8.] 轴0平均值:[2.5.8.] 轴1加权平均值:[7.8.9.]
在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)。
换句话说,标准差是方差的平方根。
【例2-44】 计算数组的标准差和方差。
import numpy as np print("数组的标准差:\n") print(np.s t d([1,4,3,6])) print("数组的方差:\n") print(np.s t d([1,4,3,6]))
运行程序,输出如下:
数组的标准差: 1.8027756377319946 数组的方差: 1.8027756377319946