您的位置:首页 > 编程语言 > Python开发

numpy聚合运算

2020-04-01 18:35 274 查看

文章目录

  • np.percentile()
  • np.var()求方差;np.std()求标准差
  • np.sum()

    import numpy as np
    L = np.random.random(100)
    """
    array([0.10026617, 0.22208392, 0.9249521 , 0.09915353, 0.30470212,
    0.51122692, 0.73486797, 0.73507233, 0.64179339, 0.40370626,
    0.22776954, 0.66732946, 0.5347043 , 0.30272425, 0.81036623,
    0.32578585, 0.03980885, 0.92016591, 0.13026301, 0.38899931,
    0.40668397, 0.69827856, 0.88888554, 0.42170014, 0.56613009,
    0.73112745, 0.23540702, 0.26560887, 0.4620741 , 0.7627782 ,
    0.17775585, 0.7898654 , 0.40337386, 0.39557836, 0.06481944,
    0.35000668, 0.50073546, 0.41902419, 0.47288019, 0.38332904,
    0.84353728, 0.61992307, 0.13020538, 0.59378203, 0.80262377,
    0.55329427, 0.11523246, 0.74533632, 0.43952667, 0.44936674,
    0.26966049, 0.40762972, 0.67832457, 0.55886082, 0.15315672,
    0.74661203, 0.12543229, 0.92515539, 0.60910709, 0.15728999,
    0.58760355, 0.3172447 , 0.61663355, 0.25190393, 0.41853258,
    0.92064846, 0.85334946, 0.18448556, 0.10266699, 0.96811099,
    0.02703382, 0.22325344, 0.8907696 , 0.80430375, 0.52975917,
    0.42825026, 0.96883465, 0.23110711, 0.25769511, 0.1812734 ,
    0.3730161 , 0.6634779 , 0.35301686, 0.8910128 , 0.3907653 ,
    0.3378278 , 0.94125455, 0.88212927, 0.40530354, 0.66303183,
    0.4412877 , 0.97359631, 0.81597928, 0.79335775, 0.35993264,
    0.82023989, 0.32684658, 0.30465004, 0.78031076, 0.1489848 ])
    """
    sum(L)
    #49.77532270487708
    np.sum(L)
    #49.77532270487708

    性能比较:

    big_array = np.random.rand(1000000)
    %timeit sum(big_array)
    %timeit np.sum(big_array)
    129 ms ± 6.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
    889 µs ± 112 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

    np.min();np.max()

    np.min(big_array)
    #4.245650752077168e-07
    np.max(big_array)
    #0.9999984487634189
    
    big_array.min()
    #4.245650752077168e-07
    big_array.max()
    #0.9999984487634189
    big_array.sum()
    #500120.87579514383

    二维数组应用

    x = np.arange(16).reshape(4,-1)
    x
    """
    array([[ 0,  1,  2,  3],
    [ 4,  5,  6,  7],
    [ 8,  9, 10, 11],
    [12, 13, 14, 15]])
    """
    np.sum(x,axis=0)#沿行进行求和
    #array([24, 28, 32, 36])
    np.sum(x,asix=1)#沿列进行求和
    #array([6,22,38,54])
    
    np.prod(x)#每个元素相乘
    #0
    np.prod(x+1)
    #2004189184
    np.mean(x)#均值
    #7.5
    np.median(x)#中位数
    #7.5

    均值与中位数

    v =  np.array([1,1,2,2,10])
    np.mean(v)
    #3.2
    np.median(v)
    #2.0

    均值不能很好的反映数据的平均水平

    np.percentile()

    np.percentile(big_array,q=50)
    #百分位点  50%的分位数,是big_array的中位数
    np.median(big_array)
    #得到的效果一样
    
    #几个重要的分位数
    for i in [0,25,50,75,100]:
    print(np.percentile(big_array,q=i))

    np.var()求方差;np.std()求标准差

    np.var(big_array)
    #方差0.08329112637157116
    
    np.std(big_array)
    #标准差
    • 点赞
    • 收藏
    • 分享
    • 文章举报
    傻子丶疯子 发布了10 篇原创文章 · 获赞 0 · 访问量 530 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: