Maison >développement back-end >Tutoriel Python >Comment calculer efficacement les écarts types glissants dans NumPy ?
Implémentation d'une fenêtre glissante pour les tableaux 1D dans NumPy
La nécessité d'effectuer efficacement des opérations de fenêtre glissante sur des tableaux 1D se pose fréquemment lors de l'analyse et de la manipulation des données . NumPy, une bibliothèque puissante pour les opérations numériques, fournit une solution polyvalente pour cette tâche.
Par exemple, considérons la tâche de calcul des écarts types glissants pour une liste de valeurs 1D. Une implémentation Python de base utilisant des boucles, comme indiqué dans la question, peut être coûteuse en calcul pour les grands ensembles de données.
Solution basée sur NumPy
Pour optimiser ce processus, NumPy propose une approche concise et efficace :
<code class="python">import numpy as np def rolling_std(array, window): return np.std(np.lib.stride_tricks.as_strided(array, shape=array.shape[0] - window + 1, strides=(array.strides[0], array.strides[0])), 1)</code>
La fonction Rolling_std prend deux arguments : le tableau 1D et la taille de fenêtre souhaitée.
La fonction as_strided de NumPy crée une vue du tableau comme s'il ont été divisés en fenêtres superposées, avec une foulée qui permet un calcul efficace.
La fonction np.std calcule ensuite l'écart type le long de la deuxième dimension, effectuant efficacement l'opération de roulement.
Utilisation
Pour calculer les écarts types glissants pour les observations du tableau d'entrée, appelez simplement :
<code class="python">stdev = rolling_std(observations, window_size)</code>
Cette solution est très performante, élimine le besoin de boucles explicites et exploite pleinement Capacités de NumPy pour une manipulation efficace des tableaux.
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!