Взвешенная скользящая средняя в питоне

У меня есть данные, выбранные с практически случайными интервалами. Я хотел бы вычислить взвешенное скользящее среднее, используя numpy (или другой пакет python). У меня есть грубая реализация скользящего среднего, но у меня возникают проблемы с поиском хорошего способа сделать взвешенное скользящее среднее, чтобы значения в направлении к центру ячейки были взвешены больше, чем значения в направлении к краям.

Здесь я генерирую некоторые примерные данные и затем беру скользящее среднее. Как мне легче всего реализовать взвешенное скользящее среднее? Спасибо!

import numpy as np
import matplotlib.pyplot as plt

#first generate some datapoint for a randomly sampled noisy sinewave
x = np.random.random(1000)*10
noise = np.random.normal(scale=0.3,size=len(x))
y = np.sin(x) + noise

#plot the data
plt.plot(x,y,'ro',alpha=0.3,ms=4,label='data')
plt.xlabel('Time')
plt.ylabel('Intensity')

#define a moving average function
def moving_average(x,y,step_size=.1,bin_size=1):
    bin_centers  = np.arange(np.min(x),np.max(x)-0.5*step_size,step_size)+0.5*step_size
    bin_avg = np.zeros(len(bin_centers))

    for index in range(0,len(bin_centers)):
        bin_center = bin_centers[index]
        items_in_bin = y[(x>(bin_center-bin_size*0.5) ) & (x

Ответы на вопрос(2)

Ваш ответ на вопрос