Submuestreo cada entrada nth en una matriz numpy

Soy un principiante con numpy, y estoy tratando de extraer algunos datos de una matriz numpy larga. Lo que debo hacer es comenzar desde una posición definida en mi matriz, y luego submuestrear cada n puntos de datos desde esa posición, hasta el final de mi matriz.

básicamente si tuviera

a = [1,2,3,4,1,2,3,4,1,2,3,4....] 

Quiero sumr esto para comenzar en a[1] y luego muestrear cada cuarto punto desde allí, para producir algo como

 b = [2,2,2.....] 

Puede usar la división de numpy , simplemente start:stop:step .

 >>> xs array([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]) >>> xs[1::4] array([2, 2, 2]) 

Esto crea una vista de los datos originales, por lo que es un tiempo constante . También reflejará los cambios en la matriz original y mantendrá toda la matriz original en la memoria:

 >>> a array([1, 2, 3, 4, 5]) >>> b = a[::2] # O(1), constant time >>> b[:] = 0 # modifying the view changes original array >>> a # original array is modified array([0, 2, 0, 4, 0]) 

así que si cualquiera de las cosas anteriores es un problema, puede hacer una copia explícitamente:

 >>> a array([1, 2, 3, 4, 5]) >>> b = a[::2].copy() # explicit copy, O(n) >>> b[:] = 0 # modifying the copy >>> a # original is intact array([1, 2, 3, 4, 5]) 

Este no es un tiempo constante, pero el resultado no está vinculado a la matriz original. La copia también es contigua en la memoria, lo que puede hacer que algunas operaciones en ella sean más rápidas.