Implementación de una ventana móvil eficiente para matrices 1D en Numpy
El concepto de una ventana móvil implica iterar a través de una secuencia de datos y aplicar un cálculo a subconjuntos de datos dentro de una longitud de ventana especificada. En el contexto dado, la tarea es calcular la desviación estándar móvil de una matriz 1D en Numpy sin usar bucles de Python.
Si bien la desviación estándar se puede obtener fácilmente usando Numpy.std, la parte de la ventana móvil plantea un desafío. Sin embargo, al aprovechar la función 'rolling_window' presentada en la publicación del blog, podemos extender su funcionalidad a matrices 1D.
La función 'rolling_window' crea una vista de la matriz de entrada reorganizada en una serie de ventanas superpuestas. facilitando un cálculo eficiente en estas ventanas. Al aplicar la función deseada, en este caso, Numpy.std, a cada ventana, obtenemos el cálculo continuo deseado.
Para ilustrar, considere el siguiente fragmento de código:
import numpy as np
# Create a 1D array
observations = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Specify window length
window_length = 3
# Calculate rolling windows
rolling_windows = rolling_window(observations, window_length)
# Calculate rolling standard deviations
rolling_stds = np.std(rolling_windows, axis=1)
# Print the results
print("Rolling standard deviations:", rolling_stds)
En este ejemplo, las 'ventanas_rolling' representan las ventanas superpuestas y 'stds_rolling' captura las desviaciones estándar rodantes calculadas. Al emplear funciones Numpy para estos cálculos, logramos eficiencia y eliminamos la necesidad de bucles de Python en el cálculo.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3