【问题标题】:Python how transform group of n elements from list to their meanPython如何将n个元素的组从列表转换为它们的平均值
【发布时间】:2020-11-04 08:23:43
【问题描述】:

我有一个清单:

l = [1,2,3,4,5,6,7,8,9,10,11]

我想从 3 个元素的片段中获取平均值。如果最后一组元素没有一分为三,则只取剩余部分的平均值:

new = [2,5,8,10.5]

最好的方法是什么?在计算速度方面(因为对于大列表,for 循环显然会很慢)

谢谢

【问题讨论】:

    标签: python-3.x list numpy vectorization


    【解决方案1】:

    1.使用listsnumpy.mean

    import numpy as np
    l = [1,2,3,4,5,6,7,8,9,10,11]
    l = [l[x:x+3] for x in range(0,len(l),3)]
    new = [np.mean(lst) for lst in l]
    
    print(new)
    

    输出:

    [2.0, 5.0, 8.0, 10.5]
    

    性能:

    +-------------+----------------+
    | List Length | Time Taken (s) |
    +-------------+----------------+
    |     1000    |      0.01      |
    |    10000    |      0.05      |
    |    100000   |      0.50      |
    |   1000000   |      5.65      |
    +-------------+----------------+
    

    2。使用numpy arraysnumpy.mean

    import numpy as np
    
    l = np.array([1,2,3,4,5,6,7,8,9,10,11])
    l = [l[x:x+3] for x in range(0,len(l),3)]
    new = [np.mean(lst) for lst in l]
    
    print(new)
    

    输出:

    [2.0, 5.0, 8.0, 10.5]
    

    性能:

    +-------------+----------------+
    | List Length | Time Taken (s) |
    +-------------+----------------+
    |     1000    |      0.005     |
    |    10000    |      0.03      |
    |    100000   |      0.28      |
    |   1000000   |      2.30      |
    +-------------+----------------+
    

    第二种方法比第一种方法快得多。因此,我强烈建议您使用第二种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2014-03-06
      • 1970-01-01
      • 2021-10-09
      • 2014-04-14
      • 1970-01-01
      相关资源
      最近更新 更多