我有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):]
。如何为此使用双端队列?
请帮助,谢谢
答案 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解决方案,则将rolling
与culebra
:
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]