Среднее или сумма каждого подмножества данных скользящей вдовы - PullRequest
0 голосов
/ 21 июня 2020

Не могли бы вы помочь мне суммировать, усреднять или использовать математическую функцию для каждого подмножества данных после сдвига окна, как показано в приведенном ниже коде (слайд подмножества)

import more_itertools
list(more_itertools.windowed([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],n=3, step=3))

Out[119]:
[(1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, 12), (13, 14, 15)]


1 Ответ

0 голосов
/ 21 июня 2020

Попробуйте это, чтобы вернуть список суммы каждого подмножества:

import more_itertools

print([sum(s) for s in more_itertools.windowed([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],n=3, step=3)))

Вывод:

[6, 15, 24, 33, 42]

Чтобы найти среднее значение :

import more_itertools

print([sum(s)/3 for s in more_itertools.windowed([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],n=3, step=3)))

Вывод:

[2.0, 5.0, 8.0, 11.0, 14.0]

Вот как поместить их в функции:

def sumlist(lst,n=3,step=3):
    
    return [sum(s) for s in more_itertools.windowed(lst,n=n,step=step)]]

def avglist(lst,n=3,step=3):
    
    return [sum(s)/n for s in more_itertools.windowed(lst,n=n,step=step)]]

Или также может быть:

def sumlist(lst,n=3,step=3):
    lst2 = []
    for s in more_itertools.windowed(lst,n=n,step=step):
        su = 0
        for n in s:
            su += n
        lst2.append(su)
    return lst2


def avglist(lst,n=3,step=3):  
    lst2 = []
    for s in more_itertools.windowed(lst,n=n,step=step):
        su = 0
        for n in s:
            su += n
        lst2.append(su/n)
    return lst2
...