Je joue à nouveau en Python, et j'ai trouvé un bon livre avec des exemples. Un des exemples est de tracer quelques données. J'ai un fichier. txt avec deux colonnes et j'ai les données. J'ai tracé les données très bien, mais dans l'exercice il dit: Modifier votre programme plus loin pour calculer et tracer la moyenne courante des données, définie par: où r5 dans ce cas (et le yk est la deuxième colonne dans le fichier de données) . Demandez au programme de tracer à la fois les données d'origine et la moyenne courante sur le même graphique. Jusqu'à présent, j'ai ceci: Comment puis-je calculer la somme Dans Mathematica sa simple depuis sa manipulation symbolique (Sumi, par exemple), mais comment calculer la somme en python qui prend tous les dix points dans les données et les moyennes, et le fait Jusqu'à la fin des points, j'ai regardé le livre, mais n'a trouvé rien qui pourrait expliquer cela: heltonbikers code a fait l'affaire: D Merci beaucoup :) Il ya un problème avec la réponse acceptée. Je pense que nous devons utiliser valide au lieu de même ici - retournez numpy. convolve (interval, window, same). A titre d'exemple, testez l'AM de cet ensemble de données 1,5,7,2,6,7,8,2,2,7,8,3,7,3,7,3,15,6 - le résultat Devrait être de 4,2,5,4,6,0,5,0,5,0,5,2,5,4,4,4,5,4,5,6,5,6,4,6,7,0,6,8. Mais en ayant la même nous donne une sortie incorrecte de 2.6.3.0,4.2,5.4,6.0,5.0,5.0,5.2,5.4,4.4,5.4,5.6,5.6, 4.6,7.0,6.8,6.2,4.8 Code rouillé pour essayer ceci -: Essayez ceci avec l'ampli valide même et voyez si la mathématique a un sens. J'ai essayé ceci dehors, mais je regarde dedans, il a été un temps depuis que j'ai codé en Python. Ndash dingod Oct 29 14 at 7:07 dingod Pourquoi ne pas essayer rapidement avec le code rouillé (et l'échantillon de données-set (comme une simple liste), j'ai posté. Pour certaines personnes paresseux (comme j'avais été au début) - il masque le fait que la moyenne mobile est incorrecte. Probablement, vous devriez envisager d'éditer votre réponse originale. J'ai essayé juste hier et la double vérification m'a sauvé le visage de regarder mal à signaler au niveau Cxo. Tout ce que vous devez faire, c'est d'essayer Votre même moyenne mobile une fois avec quotvalidquot et autre fois avec quotsamequot - et une fois que vous êtes convaincu me donner un peu d'amour (aka-up-vote) ndash ekta Oct 29 14 à 7: 16I besoin d'aide traçant une moyenne mobile sur le dessus des données I Je suis déjà capable de tracer (voir ci-dessous) J'essaie de faire m (ma moyenne mobile) égale à la longueur de y (mes données) et puis dans ma boucle for, je semble avoir les bonnes mathématiques pour ma moyenne mobile. : Mappage de x et y Ce qui ne fonctionne pas: traçant m sur le dessus de x ampère y et me donne cette erreur RuntimeWarning: valeur incorrecte rencontrée dans doublescalars Ma théorie: Je m m de np. arrays y. shape et puis en créant mon pour la boucle Pour faire m égal à l'ensemble mathématique dans la boucle de remplacer ainsi tous les 0s à la moyenne mobile, je pense que lmjohns3 réponse est correcte, mais vous avez un couple de problèmes avec votre fonction de moyenne mobile. Tout d'abord, il y a le problème de l'indexation que les lmjohns3 ont souligné. Prenez par exemple les données suivantes: Votre fonction donne les valeurs de moyenne mobile suivantes: La taille de ce tableau (7) est trop petite par un nombre. La dernière valeur de la moyenne mobile devrait être (789) 38. Pour résoudre ce problème, vous pouvez modifier votre fonction de la manière suivante: Le deuxième problème est que, pour tracer deux ensembles de données, le nombre total de points de données doit être le même. Votre fonction renvoie un nouvel ensemble de données qui est plus petit que l'ensemble de données d'origine. (Vous n'avez peut-être pas remarqué car vous avez pré-assigné un tableau de zéros de la même taille. Votre boucle for produira toujours un tableau avec un groupe de zéros à la fin.) La fonction de convolution vous donne les données correctes, mais il a deux valeurs supplémentaires Certains à chaque extrémité) en raison du même argument, ce qui garantit que le nouveau tableau de données a la même taille que l'original. Comme une autre méthode, vous pouvez vectoriser votre code en utilisant Numpys cumsum fonction. (Cette dernière est une modification de la réponse dans un post précédent.) L'astuce pourrait être que vous devriez laisser tomber les premières valeurs de votre tableau de date. Par exemple, utilisez l'appel de traçage suivant, où n est le nombre de points dans votre moyenne: Le problème ici vit dans votre calcul de la moyenne mobile - vous avez juste un couple de problèmes par index dans l'index Here youve got Tout bien sauf pour: 1. Cela indique à l'interprète de prendre une tranche à partir de ce que i-10 arrive à être, et se terminant juste avant 1. Mais si i-10 est plus grand que 1. Cela donne la liste vide. Pour le réparer, il suffit de remplacer 1 par i. En outre, votre gamme doit être prolongée par un à la fin. Remplacez y. shape0 par y. shape01. Alternative Je viens de penser que je mentionne que vous pouvez calculer la moyenne mobile plus automatiquement en utilisant np. convolve (docs): Dans ce cas, m aura la même longueur que y. Mais les valeurs moyennes mobiles pourraient sembler étranges au début et à la fin. Ceci est dû au fait que cela amène effectivement y à être rempli de zéros aux deux extrémités de sorte qu'il y ait suffisamment de valeurs de y à utiliser lors du calcul de la convolution. Si vous préférez obtenir uniquement des valeurs moyennes mobiles qui sont calculées en utilisant les valeurs de y (et non de zéro-rembourrage supplémentaire), vous pouvez les remplacer par valides. Dans ce cas, comme le souligne Ryan, m sera plus court que y (plus précisément len (m) len (y) - len (filtre) 1), que vous pouvez traiter dans votre tracé en supprimant les premier ou dernier éléments de Votre tableau de date. Répondue Aug 17 13 at 20: 58Nous avons précédemment introduit 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 terrain vert qui commence à 3: Partager cette: Comme ceci: 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