Maison  >  Article  >  développement back-end  >  Comment calculer les écarts types de fenêtre glissante sur des tableaux 1D à l'aide de Numpy ?

Comment calculer les écarts types de fenêtre glissante sur des tableaux 1D à l'aide de Numpy ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 03:23:30278parcourir

How to Calculate Rolling Window Standard Deviations on 1D Arrays Using Numpy?

Utilisation de Numpy pour les écarts types de fenêtre glissante sur des tableaux 1D

Dans numpy, une opération survient souvent lorsqu'il faut calculer une fonction de fenêtre glissante sur un tableau 1D. Une approche simple consisterait à utiliser une boucle, comme indiqué dans l'extrait de code Python donné. Cependant, une méthode plus efficace est disponible via Numpy's强大功能.

La clé pour effectuer une opération de fenêtre déroulante dans Numpy réside dans l'utilisation de la fonction Rolling_window introduite dans un article de blog. Cette fonction remodèle le tableau d'entrée en une série de fenêtres qui se chevauchent, créant ainsi un tableau 2D. L'application d'une fonction à ce tableau 2D permet d'effectuer des calculs basés sur des fenêtres.

Pour calculer les écarts types glissants, appliquez simplement la fonction numpy.std à la sortie de la fonction Rolling_window. L'extrait de code modifié suivant illustre cette approche :

import numpy as np

# Define the rolling window function
def rolling_window(a, window):
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1],)
    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)

# Input array
observations = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Calculate rolling standard deviations
stdev = np.std(rolling_window(observations, 3), 1)

# Print the results
print(stdev)

Cet extrait de code calcule efficacement les écarts types glissants pour le tableau 1D donné à l'aide d'opérations Numpy pures, éliminant ainsi le besoin de boucles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn