Comment calculer efficacement les écarts types glissants dans NumPy ?

Linda Hamilton
Libérer: 2024-10-27 16:17:02
original
320 Les gens l'ont consulté

How to Efficiently Calculate Rolling Standard Deviations in 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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!