【问题标题】:calculating every n amount of elements inside a list计算列表中每 n 个元素
【发布时间】:2020-11-05 11:50:12
【问题描述】:

我有一个大小列表 (201, 201),我想计算列表中每 9 个元素的平均值。例如[[1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25, 26, 27], [28, 29, 30, 31, 32, 33, 34, 35], [36, 37, 38, 39, 40, 41, 42, 43, 44, 45]]。我期待这样的输出:

[5, 14, 23, 28, 45]

例如,我关注了这个问题,但不幸的是,这个问题涉及数组:Averaging over every n elements of a numpy array

我也关注了这个问题:Python - Average every "n" elements in a list,但它计算的是从 n+1 到 n 个元素的平均值。

例如,我正在为上面的列表寻找一个可重复的示例,我猜这对我来说是一个开始

【问题讨论】:

  • 到目前为止你做了什么。让别人为你编写整个代码并不酷。只需添加您迄今为止尝试过的内容,并表明您愿意至少尝试找到解决方案。
  • numpy.mean 对此有一个 axis 参数
  • 替代:[sum(nums) / len(nums) for nums in nested_nums]... 结果是[5.0, 14.0, 23.0, 31.5, 40.5],顺便说一句。

标签: python python-3.x numpy math numpy-ndarray


【解决方案1】:

这是你需要的:

my_list = [[1,2, 3, 4, 5, 6, 7, 8, 9], 
       [10, 11, 12, 13, 14, 15, 16, 17, 18], 
       [19, 20, 21, 22, 23, 24, 25, 26, 27], 
       [28, 29, 30, 31, 32, 33, 34, 35], 
       [36, 37, 38, 39, 40, 41, 42, 43, 44, 45]]

avg_list = []

for item in my_list:
    avg = int(sum(item)/len(item))
    avg_list.append(avg)

【讨论】:

    【解决方案2】:

    statistics 库也为此提供了一个 mean 函数。

    from statistics import mean
    
    averages = list(map(mean, my_list))
    

    结果:

    [5, 14, 23, 31.5, 40.5]
    

    【讨论】:

      【解决方案3】:

      一种方法是通过map 使用lambda 函数:

      A = [[1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25, 26, 27], [28, 29, 30, 31, 32, 33, 34, 35], [36, 37, 38, 39, 40, 41, 42, 43, 44, 45]]
      means = list(map(lambda x: np.mean(x), A))
      

      干杯。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-11
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 2020-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多