Вычисление среднего в скользящем окне дает нули
window = []
window_sum = 0
for i in range (len(numbers_list)):
try:
window [numbers_list[i] : numbers_list[i + window_size] :]
except:
window [numbers_list[i]::]
for q in range (len(window)):
window_sum += window[q]
temp_result = window_sum/window_size
result.append (temp_result)
print(result)
Ответы (1 шт):
Операции window [numbers_list[i] : numbers_list[i + window_size] :]
и window [numbers_list[i]::]
никак window
не изменяют. window
у вас всегда остается пустым списком, которым вы его изначально инициализировали. Сумма элементов пустого списка - ноль.
Вам нужно взять сечение от number_list
и записать (присвоить) в переменную window:
window = numbers_list[i: i + window_size]
try-except тут не нужно, ошибки при выходе второго индекса за границы списка не будет, просто сечение будет максимум до конца списка.
В исправленном виде более-менее полный пример будет таким:
import random
numbers_list = [random.randint(0, 100) for _ in range(10)]
print(numbers_list)
result = []
window_size = 5
for i in range (len(numbers_list)):
window = numbers_list[i: i + window_size]
window_sum = 0 # нужно обнулять сумму
for q in range (len(window)):
window_sum += window[q]
temp_result = window_sum/window_size
result.append (temp_result)
print(result)
Обратите внимание, что перед суммированием элементов окна нужно сумму обнулить, иначе это будет сумма всех предыдущих окон, и среднее будет неправильным.
Ну и сумму можно просто функцией sum
считать:
for i in range(len(numbers_list)):
window = numbers_list[i: i + window_size]
window_sum = sum(window)
average = window_sum/window_size
result.append(average)