zoukankan      html  css  js  c++  java
  • Python机器学习(四十六)NumPy 统计函数

    Numpy提供各种统计函数,用于数据统计分析。

    从数组中找出最小和最大元素

    函数numpy.amin()numpy.amax()分别用于查找指定轴上,数组元素的最小值和最大值。

    示例

    import numpy as np  
    
    a = np.array([[2,10,20],[80,43,31],[22,43,10]])  
    
    print("原始数组:
    ")  
    print(a)  
    print('
    ')
    
    
    print("数组中最小元素:", np.amin(a))  
    print("数组中最大元素:", np.amax(a))  
    print('
    ')
    
    print("数组列中最小元素:", np.amin(a,0))  
    print("数组列中最大元素:", np.amax(a,0))  
    print('
    ')
    
    print("数组行中最小元素:", np.amin(a,1))  
    print("数组行中最大元素:", np.amax(a,1))  

    输出

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

    numpy.ptp()

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

    示例

    import numpy as np  
    
    a = np.array([[2,10,20],[80,43,31],[22,43,10]])  
    
    print("原始数组:
    ", a)  
    print('
    ')
    
    print("轴1 峰间值:", np.ptp(a,1))  
    print("轴0 峰间值:", np.ptp(a,0))   

    输出

    原始数组:
     [[ 2 10 20]
     [80 43 31]
     [22 43 10]]
    
    轴1 峰间值: [18 49 33]
    轴0 峰间值: [78 33 21]

    numpy.percentile()

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

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

    函数语法:

    numpy.percentile(input, q, axis)

    参数:

    • input: 输入数组
    • q: 要计算的百分位数,在 0 ~ 100 之间
    • axis: 计算百分位数的轴方向,二维取值0,1

    示例

    import numpy as np  
    
    a = np.array([[2,10,20],[80,43,31],[22,43,10]])  
    
    print("原始数组:
    ", a)  
    print('
    ')
    
    print("轴0 百分位数", np.percentile(a, 10,0))  
    print("轴1 百分位数", np.percentile(a, 10, 1))  

    输出

    原始数组:
     [[ 2 10 20]
     [80 43 31]
     [22 43 10]]
    
    轴0 百分位数 [ 6.  16.6 12. ]
    轴1 百分位数 [ 3.6 33.4 12.4]

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

    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,2,3],[4,5,6],[7,8,9]])  
    
    print("原始数组:
    ", a)  
    print('
    ')
    
    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 2 3]
     [4 5 6]
     [7 8 9]]
    
    轴0 中值: [4. 5. 6.]
    轴0 平均值: [4. 5. 6.]
    轴1 加权平均值: [3. 6. 9.]

    标准差与方差

    numpy.std()

    要计算标准差,可以使用std()函数。

    标准差的公式:

    std = sqrt(mean(abs(x - x.mean())**2))
    

    numpy.std()

    要计算方差,可以使用var()函数。

    方差公式

    var = mean(abs(x - x.mean())**2)
    

    示例

    import numpy as np 
    print (np.std([1,2,3,4]))
    print (np.var([1,2,3,4]))

    输出

     1.118033988749895
     1.25
  • 相关阅读:
    Java实现蓝桥杯 算法提高 线段和点
    Java实现蓝桥杯 算法提高 线段和点
    Java实现蓝桥杯 算法提高 线段和点
    Java实现第八届蓝桥杯国赛 数字划分
    Java实现第八届蓝桥杯国赛 数字划分
    Java实现第八届蓝桥杯国赛 数字划分
    Java实现第八届蓝桥杯国赛 数字划分
    Java实现第八届蓝桥杯国赛 数字划分
    Java实现蓝桥杯-算法提高 P1003
    必须得是一万小时的 刻意训练(deliberate practice)
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/13161983.html
Copyright © 2011-2022 走看看