Sumar elementos en una ventana deslizante – NumPy

¿Hay una manera numérica de hacer una sum cada tres elementos en el intervalo? Por ejemplo:

import numpy as np mydata = np.array([4, 2, 3, 8, -6, 10]) 

Me gustaría obtener este resultado:

 np.array([9, 13, 5, 12]) 

Podemos usar np.convolve

 np.convolve(mydata,np.ones(3,dtype=int),'valid') 

La idea básica con la convolution es que tenemos un kernel que deslizamos a través de la matriz de entrada y la operación de convolución sum los elementos multiplicados por los elementos del kernel a medida que el kernel se desliza. Entonces, para resolver nuestro caso para un tamaño de ventana de 3 , estamos usando un núcleo de tres 1s generados con np.ones(3) .

Ejecución de la muestra

 In [334]: mydata Out[334]: array([ 4, 2, 3, 8, -6, 10]) In [335]: np.convolve(mydata,np.ones(3,dtype=int),'valid') Out[335]: array([ 9, 13, 5, 12])