Monday, 13 February 2017

Déplacement Moyenne En Python

Disons que j'ai une liste: Je veux créer une fonction qui calcule la moyenne mobile de n jours. Donc si n était 5, je voudrais que mon code pour calculer le premier 1-5, l'ajouter et de trouver la moyenne, ce qui serait de 3,0, puis passer à 2-6, calculer la moyenne, ce qui serait 4,0, puis 3 -7, 4-8, 5-9, 6-10. Je ne veux pas calculer les premiers n-1 jours, donc à partir du jour nth, itll compter les jours précédents. Cela semble imprimer ce que je veux: Cependant, je ne sais pas comment calculer les nombres à l'intérieur de ces listes. Alors que j'aime la réponse Martijns sur ce, comme George, je me demandais si ce ne serait pas plus rapide en utilisant une somme courante au lieu d'appliquer la somme () maintes et maintes fois sur la plupart des mêmes numéros . L'idée d'avoir des valeurs None pendant la phase de montée en puissance est également intéressante. En fait, il peut y avoir beaucoup de scénarios différents, on pourrait concevoir pour les moyennes mobiles. Nous divisons le calcul des moyennes en trois phases: Ramp Up: Démarrage des itérations où l'itération actuelle compte lt taille de la fenêtre Progression régulière: Nous avons exactement la taille de la fenêtre nombre d'éléments disponibles pour calculer une moyenne normale: sum (xiterationcounter-windowsize: iterationcounter) Ramp Down: A la fin des données d 'entrée, nous pourrions retourner un autre nombre de fenêtres - 1 moyenne. Taille des fenêtres arbitraires 1 Paramètres pour commuter la production de valeurs pendant les phases pour les fonctions Ramp UpDown Callback pour ces phases afin de contrôler comment les valeurs sont produites. Cela peut être utilisé pour fournir constamment un défaut (par exemple Aucun) ou pour fournir des moyennes partielles Il semble être un peu plus rapide que la version Martijns - qui est beaucoup plus élégant, cependant. Heres le code d'essai: La question originale peut maintenant être résolue avec cette fonction call: Répondue févr. 18 13 à 18h15 Utilisez les fonctions somme et carte. La fonction de la carte dans Python 3 est fondamentalement une version paresseuse de ceci: Im sûr que vous pouvez deviner ce que la fonction de somme fait. Une approche qui évite recomputer des sommes intermédiaires .. make that runs (int (v)). puis. Repr (runsumlistk - runsumlistk-5) 5) si vous fourrez de porter autour des nombres une chaîne .. Alt sans le global: assurez-vous de faire des maths flottants même si vous les valeurs d'entrée sont des nombres entiers répondu Sum algorithme est plus rapide. J'ai posté une réponse pour prouver votre point. Il n'y a tout simplement pas besoin d'une variable globale ici. Ndash cfi Feb 18 13 at 18:16 droit que vous êtes, j'ai essayé trop dur à aviod un explicite pour la boucle. Ndash agentp Feb 19 13 at 18:37 Il ya une autre solution d'extension d'une recette itertools par paire (). Vous pouvez étendre cela à nwise (). Qui vous donne la fenêtre coulissante (et fonctionne si l'iterable est un générateur): Bien qu'un coût d'installation relativement élevé pour les iterables courtes s ce coût réduit en impact plus longtemps l'ensemble de données. Cela utilise sum (), mais le code est raisonnablement élégant: Réponse Nov 26 16 at 14: 59Les exemples suivants produit une moyenne mobile des valeurs précédentes WINDOW. Nous tronquons les premières valeurs (WINDOW -1) puisque nous ne pouvons pas trouver la moyenne avant elles. (Le comportement par défaut pour la convolution est de supposer que les valeurs avant le début de notre séquence sont 0). (Plus formellement, nous construisons la suite y pour la suite x où yi (xi x (i1) 8230. x (in)) n) Cela fait appel à la fonction de convolution numpy8217s. Il s'agit d'une opération de moyenne mobile à usage général. La modification des pondérations rend certaines valeurs plus importantes, le décalage de manière appropriée vous permet de voir la moyenne autour du point plutôt qu'avant le point. Plutôt que de tronquer des valeurs, nous pouvons fixer les valeurs initiales en place, comme illustré dans cet exemple: Nous avons précédemment présenté comment créer des moyennes mobiles en utilisant python. Ce tutoriel sera une suite de ce sujet. Une moyenne mobile dans le contexte de la statistique, également appelée moyenne de roulement, est un type de réponse impulsionnelle finie. Dans notre tutoriel précédent, nous avons tracé les valeurs des matrices x et y: Let8217s tracent x contre la moyenne mobile de y que nous appellerons yMA: Tout d'abord, let8217s égaliser la longueur des deux arrays: Et de le montrer dans le contexte: Graph: Pour aider à comprendre cela, let8217s tracer deux relations différentes: x vs y et x vs MAy: La moyenne mobile est ici le parcours vert qui commence à 3: Share this: Like this: Navigation de poste Laisser un commentaire Annuler la réponse Très utile I Voudrais lire la dernière partie sur de grands ensembles de données Espérons qu'il viendra bientôt8230 d bloggers comme ceci:


No comments:

Post a Comment