注意:这是一系列阵列操作挑战中的第3条。对于上一个挑战,请单击此处。
列表的移动平均值
列表的移动平均值是通过对原始重叠的小子列表进行平均而得出的新的平滑列表。
在创建移动平均线时,我们首先使用一定的“窗口大小”生成重叠子列表的列表,每次将此窗口向右移一次。
例如,给定列表[8, 4, 6, 2, 2, 4]
和窗口大小3
,子列表将是:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
然后,我们计算每个子列表的平均平均值以获得结果:([6.0, 4.0, 3.3, 2.7]
每个值四舍五入到小数点后一位)。
挑战
你的任务是写一个程序或其中,给定一个列表功能大号和整数1个≤N≤长度(L) ,计算移动平均为大号使用窗口大小Ñ。
规则:
- 您的程序可能使用整数除法或浮点除法。对于浮点除法,只要值是正确的,就可以允许由于数据类型的限制而产生的小误差。
- 您可以提交完整的程序或功能(而不是代码段)。
- 您可以假定列表仅包含正整数。
- 禁止出现标准漏洞。
- 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜!
测试用例
请注意,为了便于阅读,所有值均四舍五入到小数点后一位。
n=5, [1, 2, 3, 4, 5, 6, 7, 8] -> [3, 4, 5, 6]
n=3, [100, 502, 350, 223, 195] -> [317.3, 358.3, 256]
n=1, [10, 10, 10] -> [10, 10, 10]
n=3, [10, 20, 30] -> [20]
n=2, [90, 40, 45, 100, 101] -> [65, 42.5, 72.5, 100.5]