"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso calcular com eficiência o desvio padrão móvel para uma matriz 1D em Numpy sem loops?

Como posso calcular com eficiência o desvio padrão móvel para uma matriz 1D em Numpy sem loops?

Publicado em 17/11/2024
Navegar:713

How can I efficiently calculate rolling standard deviation for a 1D array in Numpy without loops?

Implementando uma janela rolante eficiente para matrizes 1D em Numpy

O conceito de uma janela rolante envolve iterar por meio de uma sequência de dados e aplicar um cálculo para subconjuntos de dados dentro de um comprimento de janela especificado. No contexto determinado, a tarefa é calcular o desvio padrão contínuo de uma matriz 1D em Numpy sem usar loops Python.

Embora o desvio padrão possa ser facilmente obtido usando Numpy.std, a parte da janela contínua representa um desafio. No entanto, aproveitando a função 'rolling_window' apresentada na postagem do blog, podemos estender sua funcionalidade para matrizes 1D.

A função 'rolling_window' cria uma visualização da matriz de entrada reorganizada em uma série de janelas sobrepostas, facilitando a computação eficiente nessas janelas. Ao aplicar a função desejada, neste caso, Numpy.std, a cada janela, obtemos o cálculo contínuo desejado.

Para ilustrar, considere o seguinte trecho 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)

Neste exemplo, 'rolling_windows' representa as janelas sobrepostas e 'rolling_stds' captura os desvios padrão contínuos calculados. Ao empregar funções Numpy para esses cálculos, alcançamos eficiência e eliminamos a necessidade de loops Python na computação.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3