列表中给定元素的最后6个元素的平均值

时间:2018-06-28 05:37:35

标签: python list pandas deque

我有list=[307, 258, 164, 193, 174, 285, 230, 160, 257, 306, 173, 169, 192, 209, 110]

我想从列表中给定的元素[n]计算平均最后6个元素,然后n应该迭代1 [n + 1],然后再次执行相同的操作。

L3 [-15:]我知道如何访问d列表中的最后几个元素。 new_list = my_list[(len(my_list) - 10):]。如何为此使用双端队列?

请帮助,谢谢

3 个答案:

答案 0 :(得分:2)

我不确定您要问什么,但也许您正在寻找滚动平均值。在这种情况下,我使用列表推导来创建滚动平均值:

 @php($counter=0)
 @foreach($rows as $index=>$row)
      $counter=$counter+2;
      {{$counter}}
 @endforeach

其中mylist = [307, 258, 164, 193, 174, 285, 230, 160, 257, 306, 173, 169, 192, 209, 110] rolling_avg = [mylist[j-6:j]/6 for j in range(6, len(mylist))] # [230.16666666666666, # 217.33333333333334, # 201.0, # 216.5, # 235.33333333333334, # 235.16666666666666, # 215.83333333333334, # 209.5, # 217.66666666666666] 中的第一个数字是rolling_avg中六个第一个数字的平均值,第二个数字是索引1到6的数字的平均值,...

答案 1 :(得分:2)

我认为最好使用Julien Spronck解决方案,但是如果要使用pandas解决方案,则将rollingculebra

mean

答案 2 :(得分:2)

为此,您可以使用collections.deque,一次仅容纳6个元素,并找到双端队列的平均值。

from collections import deque
lst = [307, 258, 164, 193, 174, 285, 230, 160, 257, 306, 173, 169, 192, 209, 110]
n = 6
d = deque(maxlen=n)

[d.append(e) or sum(d)/float(n) for e in lst][n-1:]
# [230.16666666666666, 217.33333333333334, 201.0, 216.5, 235.33333333333334, 235.16666666666666, 215.83333333333334, 209.5, 217.66666666666666, 193.16666666666666]