NumPy学习8
今天学习了NumPy统计函数
16,NumPy统计函数
numpy_test8.py :
import numpy as np ''' 16,NumPy统计函数 NumPy 提供了许多统计功能的函数,比如查找数组元素的最值、百分位数、方差以及标准差等。 ''' ''' 1) numpy.amin() 和 numpy.amax() 这两个函数用于计算数组沿指定轴的最小值与最大值: amin() 沿指定的轴,查找数组中元素的最小值,并以数组形式返回; amax() 沿指定的轴,查找数组中元素的最大值,并以数组形式返回。 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向。 ''' print("----16,NumPy统计函数----") print("----1) numpy.amin() 和 numpy.amax()----") arr1 = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]]) print('arr1 : ', arr1) # numpy.amin() 最小值 print('np.amin(arr1) : ', np.amin(arr1)) # numpy.amin() 最小值,axis=1 表示沿着水平方向 print('np.amin(arr1, 1) : ', np.amin(arr1, 1)) # numpy.amax() 最大值 print('np.amax(arr1) : ', np.amax(arr1)) # numpy.amax() 最大值, axis=0 表示沿着垂直方向 print('np.amax(arr1 ,axis=0) : ', np.amax(arr1, axis=0)) ''' arr1 : [[3 7 5] [8 4 3] [2 4 9]] np.amin(arr1) : 2 np.amin(arr1, 1) : [3 3 2] np.amax(arr1) : 9 np.amax(arr1 ,axis=0) : [8 7 9] ''' ''' 2) numpy.ptp() numpy.ptp() 用于计算数组元素中最值之差值,也就是(最大值 - 最小值)。 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向。 ''' print("----2) numpy.ptp()----") print('arr1 : ', arr1) print("沿着axis 1,最值之差值:",np.ptp(arr1, 1)) print("沿着axis 0,最值之差值:",np.ptp(arr1, 0)) ''' arr1 : [[3 7 5] [8 4 3] [2 4 9]] 沿着axis 1,最值之差值: [4 5 7] 沿着axis 0,最值之差值: [6 3 6] ''' ''' 3) numpy.percentile() 百分位数,是统计学中使用的一种度量单位。该函数表示沿指定轴,计算数组中任意百分比分位数,语法格式如下: numpy.percentile(a, q, axis) 函数 numpy.percentile() 的参数说明: a:输入数组; q:要计算的百分位数,在 0~100 之间; 介于0-100的float,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置的数就(25,75) axis:沿着指定的轴计算百分位数。 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向。 ''' print("----3) numpy.percentile()----") print('arr1 : ', arr1) print("沿着axis=0计算百分位数", np.percentile(arr1, 10, 0)) print("沿着axis=1计算百分位数", np.percentile(arr1, 10, 1)) ''' arr1 : [[3 7 5] [8 4 3] [2 4 9]] 沿着axis=0计算百分位数 [2.2 4. 3.4] 沿着axis=1计算百分位数 [3.4 3.2 2.4] ''' ''' 4) numpy.median() numpy.median() 用于计算 a 数组元素的中位数(中值): 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向。 ''' print("----4) numpy.median()----") print('arr1 : ', arr1) # np.median() 数组元素的中位数 print("np.median(arr1): ", np.median(arr1)) # np.median() 数组元素的中位数 ,axis 0: 垂直方向 print("np.median(arr1, axis=0): ", np.median(arr1, axis=0)) # np.median() 数组元素的中位数 ,axis 1: 水平方向 print("np.median(arr1, axis=1): ", np.median(arr1, axis=1)) ''' arr1 : [[3 7 5] [8 4 3] [2 4 9]] np.median(arr1): 4.0 np.median(arr1, axis=0): [3. 4. 5.] np.median(arr1, axis=1): [5. 4. 4.] ''' ''' 5) numpy.mean() 该函数表示沿指定的轴,计算数组中元素的算术平均值(即元素之总和除以元素数量)。 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向。 ''' print("----5) numpy.mean()----") print('arr1 : ', arr1) print("np.mean(arr1): ", np.mean(arr1)) print ('沿轴 0 水平方向,调用 mean() 函数:') print("np.mean(arr1, axis=0): ", np.mean(arr1, axis=0)) print ('沿轴 1 垂直方向,调用 mean() 函数:') print("np.mean(arr1, axis=1): ", np.mean(arr1, axis=1)) ''' arr1 : [[3 7 5] [8 4 3] [2 4 9]] np.mean(arr1): 5.0 沿轴 0 水平方向,调用 mean() 函数: np.mean(arr1, axis=0): [4.33333333 5. 5.66666667] 沿轴 1 垂直方向,调用 mean() 函数: np.mean(arr1, axis=1): [5. 5. 5.] ''' ''' 6) numpy.average() 加权平均值是将数组中各数值乘以相应的权数,然后再对权重值求总和,最后以权重的总和除以总的单位数(即因子个数)。 numpy.average() 根据在数组中给出的权重,计算数组元素的加权平均值。 该函数可以接受一个轴参数 axis,如果未指定,则数组被展开为一维数组。 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向。 ''' print("----6) numpy.average()----") arr2 = np.array([1, 4, 7, 9]) print('arr2 : ', arr2) # average()函数: print("np.average(arr2): ", np.average(arr2)) # 若不指定权重相当于对数组求均值 weight = np.array([7, 5, 3, 1]) # 调用 average() 函数: print("np.average(arr2, weights=weight): ", np.average(arr2, weights=weight)) # returned=Ture,则返回权重的和 print("np.average(arr2, weights=weight, returned=True): ", np.average(arr2, weights=weight, returned=True)) ''' arr2 : [1 4 7 9] np.average(arr2): 5.25 np.average(arr2, weights=weight): 3.5625 np.average(arr2, weights=weight, returned=True): (3.5625, 16.0) ''' # 在多维数组中,您也可以指定 axis 轴参数。 print("----在多维数组中,您也可以指定 axis 轴参数。----") arr3 = np.arange(6).reshape(3, 2) print('arr3 : ', arr3) # 指定权重 wt = np.array([3, 5]) print("np.average(arr3, axis=1, weights=wt): ", np.average(arr3, axis=1, weights=wt)) # returned=Ture,则返回权重的和 print("np.average(arr3, axis=1, weights=wt, returned=True): ", np.average(arr3, axis=1, weights=wt, returned=True)) ''' arr3 : [[0 1] [2 3] [4 5]] np.average(arr3, axis=1, weights=wt): [0.625 2.625 4.625] np.average(arr3, axis=1, weights=wt, returned=True): (array([0.625, 2.625, 4.625]), array([8., 8., 8.])) ''' ''' 7) numpy.var() 方差 方差,在统计学中也称样本方差,如何求得方差呢?首先我们要知道全体样本的的平均值, 然后再求得每个样本值与均值之差的平方和,最后对差的平方和求均值,公式如下(其中 n 代表元素个数): ''' print("----7) numpy.var() 方差----") print('np.var([1, 2, 3, 4]) : ', np.var([1, 2, 3, 4])) ''' np.var([1, 2, 3, 4]) : 1.25 ''' ''' 8) numpy.std() 标准差 标准差是方差的算术平方根,用来描述一组数据平均值的分散程度。若一组数据的标准差较大, 说明大部分的数值和其平均值之间差异较大;若标准差较小,则代表这组数值比较接近平均值。它的公式如下: std = sqrt(mean((x - x.mean())**2 ''' print("----8) numpy.std() 标准差----") print('np.std([1, 2, 3, 4]) : ', np.std([1, 2, 3, 4])) ''' np.std([1, 2, 3, 4]) : 1.118033988749895 '''