Maison >développement back-end >Tutoriel Python >Comment implémenter des moyennes mobiles en Python sans fonction dédiée ?

Comment implémenter des moyennes mobiles en Python sans fonction dédiée ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-19 21:13:03720parcourir

How to Implement Moving Averages in Python without a Dedicated Function?

Implémentation de moyennes mobiles avec Python

Malgré l'absence de fonction dédiée au calcul des moyennes mobiles dans NumPy ou SciPy, il existe une méthode simple et moyen efficace de l’implémenter à l’aide de la fonction np.cumsum. Cette approche est particulièrement efficace pour les moyennes mobiles non pondérées.

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

Ce code prend un tableau a et une taille de fenêtre n pour calculer la moyenne mobile. Il utilise np.cumsum pour calculer la somme cumulée du tableau, puis soustrait la somme des n éléments précédents pour ajuster la fenêtre mobile. Le tableau résultant est ensuite divisé par n pour obtenir la moyenne.

Par exemple, le code suivant calcule la moyenne mobile d'un tableau :

a = np.arange(20)
moving_average(a)
# array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.,
#         12.,  13.,  14.,  15.,  16.,  17.,  18.])

Il convient de noter que la mise en œuvre de moyennes mobiles est relativement simple dans NumPy, et l'inclusion d'une telle fonctionnalité dans la bibliothèque peut ne pas être nécessaire, car cela pourrait entraîner une surcharge et réduire la concentration de la bibliothèque sur ses fonctionnalités de base.

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