2015-11-14 10 views
1

Учитывая кортеж v = (1,2,3,4,) как я преобразовать его в кортеж прокатки средних, учета круговых конечных расчетов, т.е. ВыходКруговая скользящая средняя на кортеж Python

((4+1+2)/3, (1+2+3)/3, (2+3+4)/3, (3+4+1)/3,) 

Естественно, вектор и окно размеры могут меняться. В приведенном выше примере ширина полосы пропускания равна 1 (размер окна 3).

+1

Опять же, не нужно говорить * спасибо * здесь: P –

+1

если размер окна 2, каков должен быть выход? ((4 + 1)/2, (1 + 2)/2, (2 + 3)/2, (3 + 4)/2,) или ((1 + 2)/2, (2 + 3)/2, (3 + 4)/2, (4 + 1)/2,) – Hooting

+0

Окно здесь (и обычно) определяется как полоса пропускания 2 * + 1. Если полоса пропускания является натуральным числом, размер окна всегда нечетный :) Благодаря! Хороший вопрос о разъяснении. –

ответ

4

Просто наклеить дополнительные элементы в конец списка:

def movingAverages(seq, k): 
    circle = seq + seq[:k] 
    for j in range(len(seq)): 
     yield sum(circle[j:j+k])/k 

Например:

list(movingAverages([1,2,3,4,5],2)) 
[1.5, 2.5, 3.5, 4.5, 3.0] 

 Смежные вопросы

  • Нет связанных вопросов^_^