Maison  >  Article  >  développement back-end  >  Comment calculer efficacement une moyenne mobile en Python avec NumPy ?

Comment calculer efficacement une moyenne mobile en Python avec NumPy ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 08:16:03135parcourir

How to Efficiently Calculate a Rolling Average in Python with NumPy?

Calcul de la moyenne mobile / mobile en Python avec NumPy / SciPy

Malgré les fonctionnalités étendues de NumPy et SciPy, le calcul d'une moyenne mobile peut être une tâche étonnamment complexe. Cet article aborde le problème en fournissant une solution facile à mettre en œuvre à l'aide de np.cumsum de NumPy.

Le moyen le plus simple d'implémenter la moyenne mobile avec NumPy

Pour un simple non -moyenne mobile pondérée, np.cumsum fournit une solution efficace :

def moving_average(a, n=3):
    ret = np.cumsum(a, dtype=float)
    ret[n:] = ret[n:] - ret[:-n]
    return ret[n - 1:] / n

Performance et simplicité

Cette méthode offre des performances élevées car elle exploite le np.cumsum optimisé de NumPy fonction, surpassant les méthodes basées sur la FFT dans certains cas. De plus, il évite les erreurs potentielles associées aux algorithmes complexes, ce qui le rend très fiable.

Rationnelle pour l'exclusion de la fonctionnalité de moyenne mobile dans NumPy

Malgré son utilité apparente, il peut y avoir raisons valables pour exclure la fonctionnalité de moyenne mobile du noyau NumPy :

  • La simplicité par rapport à la fonctionnalité : NumPy s'efforce de conserver un noyau simple et compact, évitant ainsi l'encombrement inutile des fonctions spécialisées.
  • Disponibilité des solutions implémentées par l'utilisateur : Comme démontré ci-dessus, la mise en œuvre d'une moyenne mobile avec NumPy est simple, ce qui rend inutile la duplication des fonctionnalités dans la bibliothèque.

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