взвешенная скользящая средняя с numpy.convolve

Я пишу функцию скользящего среднего, которая использует функцию свертки в numpy, которая должна быть эквивалентна (взвешенное скользящее среднее). Когда все мои веса равны (как в простом среднем арифметическом), все работает нормально:

data = numpy.arange(1,11)
numdays = 5
w = [1.0/numdays]*numdays
numpy.convolve(data,w,'valid')

дает

array([ 3.,  4.,  5.,  6.,  7.,  8.])

Тем не менее, когда я пытаюсь использовать средневзвешенное

w = numpy.cumsum(numpy.ones(numdays,dtype=float),axis=0); w = w/numpy.sum(w)

вместо (для тех же данных) 3,667,4,667,5,667,6,667, ... Я ожидаю, я получаю

array([ 2.33333333,  3.33333333,  4.33333333,  5.33333333,  6.33333333,
        7.33333333])

Если я удалю «действительный» флаг, я даже не вижу правильные значения. Я действительно хотел бы использовать Convolve для WMA, а также MA, так как это делает код чище (тот же код, разные веса), и в противном случае я думаю, что мне придется циклически проходить по всем данным и брать фрагменты.

Есть идеи об этом поведении?

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

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