Friday, October 21, 2016

Matplotlib Bewegende Gemiddelde Voorbeeld

Inleiding matplotlib is 'n luislang 2D plot biblioteek wat persklaar figure in 'n verskeidenheid van gedrukte formaat en interaktiewe omgewings verskillende platforms produseer. matplotlib kan gebruik word in Python skrifte, die luislang en ipython dop (ala MATLAB Reg of Mathematica reg8224), webtoepassing bedieners, en ses grafiese gebruikerskoppelvlak hulpmiddels. matplotlib probeer om maklike dinge maklik en hard dinge moontlik te maak. Jy kan erwe, histogramme, mag spektra, staafgrafieke, errorcharts, spreiding diagrammen, ens genereer, met net 'n paar reëls van die kode. Vir 'n voorbeeld, sien die screenshots. thumbnail gallery, en voorbeelde gids vir eenvoudige plot die pyplot koppelvlak bied 'n MATLAB-agtige koppelvlak, veral wanneer dit gekombineer met IPython. Vir die krag gebruiker, jy het volle beheer van lyn style, font eienskappe, byle eienskappe, ens, via 'n objekgeoriënteerde koppelvlak of via 'n stel van funksies bekende MATLAB gebruikers. John Hunter (1968-2012) het op 28 Augustus 2012, John D. Hunter, die skepper van matplotlib, gesterf het aan komplikasies wat uit die behandeling van kanker, na 'n kort, maar intense stryd met hierdie verskriklike siekte. John word oorleef deur sy vrou Miriam, sy drie dogters Ragel, Ava en Clara, sy susters Layne en Maria, en sy moeder Sara. As jy het baat gevind by die Johns baie bydraes, kan jy sê dankie in die manier waarop die meeste aan hom sou saak. Oorweeg dit asseblief om 'n skenking aan die John Hunter Tegnologie Fellowship. Installasie dokumentasie Hierdie is 'n dokumentasie vir matplotlib weergawe 1.5.3. Probeer om te leer hoe om dit te doen 'n bepaalde soort plot Check uit die gallery. voorbeelde. of die lys van die plot bevele. Ander bronne leer Daar is baie eksterne leer hulpbronne wat beskikbaar is, insluitend gedrukte materiaal, video's en tutoriale. Hulp nodig matplotlib is 'n verwelkoming, inklusiewe projek, en ons probeer om die Python Software Foundation gedragskode volg in alles wat ons doen. Gaan die FAQ. die API dokumente, poslys argiewe. en sluit die matplotlib e-lys Gebruikers. Kondig en Ontwikkelings. Check uit die matplotlib vrae oor StackOverflow. Die naslaanbron soek al die dokumentasie, insluitend die volledige teks van meer as 350 volledige voorbeelde wat byna elke uithoek van matplotlib oefen. Jy kan foute, kolle en funksie versoeke te dien op die GitHub Tracker. maar dit is 'n goeie idee om ons te ping op die poslys. Om op hoogte te bly met wat aangaan in matplotlib, sien die whats nuwe bladsy of blaai deur die bronkode. Enigiets wat kan vereis dat veranderinge aan jou bestaande kode is aangemeld in die lêer api veranderinge. Hulpmiddels Daar is verskeie matplotlib add-on hulpmiddels. insluitend 'n keuse van twee projeksie en kartering hulpmiddels basemap en cartopy. 3D plot met mplot3d. byle en as helpers in axesgrid. verskeie hoër-vlak plot koppelvlakke seaborn. holoviews. ggplot. en nog baie meer. Met verwysing na matplotlib matplotlib is die breinkind van John Hunter (1968-2012), wat saam met sy talle bydraers, het 'n onmeetbare hoeveelheid tyd en moeite in die vervaardiging van 'n stuk sagteware wat gebruik word deur duisende wetenskaplikes wêreldwyd sit. As matplotlib dra by tot 'n projek wat lei tot 'n wetenskaplike publikasie, Erken asseblief hierdie werk deur die verwysing na die projek. Jy kan dit gereed gemaak aanhaling inskrywing gebruik. Open source Die matplotlib lisensie is gebaseer op die Python Software Foundation (PSF) lisensie. Daar is 'n aktiewe ontwikkelaar gemeenskap en 'n lang lys van mense wat betekenisvolle bydraes gemaak het. Matplotlib word gehuisves op GitHub. Kwessies en trek versoeke is nagespoor by GitHub ook. MATLAB is 'n geregistreerde handelsmerk van The MathWorks, Inc. 8224 Mathematica is 'n geregistreerde handelsmerk van Wolfram Research, Inc. kopie Kopiereg 2002-2012 John Hunter, Darren Dale, Eric afvuur, Michael Droettboom en die matplotlib ontwikkelingspan 2012-2014 Die matplotlib ontwikkeling span. Laaste opgedateer op 20 September, 2016. Maak gebruik van Sphinx 1.4.6.numpy. average Axis waarlangs om gemiddeld 'n. As een. gemiddelde gedoen oor die plat skikking. gewigte. arraylike, opsioneel 'n verskeidenheid van gewigte wat verband hou met die waardes in 'n. Elke waarde in 'n bydrae lewer tot die gemiddelde volgens sy verwante gewig. Die gewigte array kan óf 1-D (in welke geval moet sy lengte van die grootte van 'n langs die gegewe as wees) of van dieselfde vorm as 'n. As weightsNone. dan sal al die data in 'n word aanvaar dat 'n gewig gelyk aan een het. teruggekeer . Bool, opsionele Standaard is Vals. As dit waar is. die tuple (gemiddelde. sumofweights) teruggestuur, anders net die gemiddelde teruggestuur. As weightsNone. sumofweights is gelykstaande aan die aantal elemente waaroor die gemiddelde geneem. gemiddelde, sumofweights. arraytype of dubbel terug die gemiddelde langs die gespesifiseerde as. Wanneer teruggekeer waar is. terugkeer 'n tuple met die gemiddelde as die eerste element en die som van die gewigte as die tweede element. Die tipe terugkeer is Float as a van heelgetal tipe, anders is dit van dieselfde soort as 'n. sumofweights is van dieselfde soort as die gemiddelde. Hmmm, dit lyk hierdie quoteasy te funksioneer implementquot is eintlik redelik maklik om te kry verkeerd en het 'n goeie gesprek oor geheue doeltreffendheid bevorder. I39m gelukkig om opblaas het as dit beteken dat die wete dat something39s is reg gedoen. â € Richard September 20 14 by 19:23 NumPys gebrek aan 'n spesifieke domein-spesifieke funksie is dalk te danke aan die Core Spanne dissipline en getrouheid aan NumPys eerste aanwysing: bied 'n N-dimensionele skikking tipe. asook funksies vir die skep, en kruip die skikkings. Soos baie fundamentele doelwitte, hierdie een is nie klein en Numpy doen dit briljant. Die (baie) groter Scipy bevat 'n veel groter versameling van domein-spesifieke biblioteke (genoem subpakette insluit deur Scipy devs) - byvoorbeeld, numeriese optimalisering (optimaliseer), sein Verwerk (sein), en integraalrekening (integreer). My raaiskoot is dat die funksie wat jy soek is in ten minste een van die Scipy subpakette insluit (scipy. signal miskien) Maar ek sal eers kyk in die versameling van Scipy scikits. identifiseer die relevante scikit (s) en kyk vir die funksie van belang daar. Scikits is (bv scikits-beeld. Scikits-leer. Ens) onafhanklik van mekaar ontwikkel pakkette wat gebaseer is op Numpy / Scipy en gerig word aan 'n bepaalde tegniese dissipline Verskeie van hulle was (in die besonder, die ontsagwekkende OpenOpt vir numeriese optimalisering) is hoog aangeskryf, volwasse projekte lank voor die keuse onder die relatief nuwe scikits rubriek te woon. Die Scikits tuisblad graag bogenoemde lyste ongeveer 30 sulke scikits. al ten minste 'n paar van diegene nie meer onder aktiewe ontwikkeling. Na aanleiding van hierdie raad sal jy egter lei tot scikits-tijdreeksen, wat pakket is nie meer onder aktiewe ontwikkeling In effek, het Pandas geword, AFAIK, die de facto Numpy - gebaseerde tydreekse biblioteek. Pandas het verskeie funksies wat gebruik kan word om 'n bewegende gemiddelde die eenvoudigste van hierdie is waarskynlik rollingmean bereken. wat jy gebruik soos so: Nou, net noem die funksie rollingmean verby in die reeks voorwerp en 'n venster grootte. wat in my voorbeeld hieronder is 10 dae. bevestig dat dit gewerk het - Bv. in vergelyking waardes 10 - 15 in die oorspronklike reeks teenoor die nuwe reeks reëlmatige met rollende beteken Die funksie rollingmean, saam met ongeveer 'n dosyn of so ander funksie is informeel gegroepeer in die dokumentasie Pandas onder die rubriek beweeg venster funksies 'n tweede, wat verband hou groep funksies in Pandas word na verwys as eksponensieel-gelaaide funksies (bv ewma. wat eksponensieel bereken beweeg geweegde gemiddelde). Die feit dat hierdie tweede groep is nie ingesluit in die eerste (bewegende venster funksies) is miskien omdat die eksponensieel-geweeg transforms hoef staatmaak op 'n vaste-lengte windowIn my laaste sin is ek probeer om aan te dui waarom dit help swaai punt fout. As twee waardes is min of meer dieselfde orde van grootte, dan voeg hulle minder presisie verloor as wanneer jy 'n baie groot aantal by 'n baie klein een. Die kode kombineer quotadjacentquot waardes op 'n wyse dat selfs intermediêre somme altyd redelik naby in grootte moet wees, om die drywende punt fout te minimaliseer. Niks is fool proof maar hierdie metode het 'n paar baie swak geïmplementeer projekte in produksie gered. â € Mayur Patel 15 Desember 14 by 17:22 Alleo: In plaas van doen 'n toevoeging per waarde, you39ll doen twee. Die bewys is dieselfde as die bietjie daarby probleem. Maar die punt van hierdie antwoord is nie noodwendig prestasie, maar presisie. Geheue gebruik vir gemiddeld 64-bit waardes sou nie meer as 64 elemente in die kas, so it39s vriendelike in geheue gebruik sowel. â € Mayur Patel 29 Desember 14 by 17:04 UPD: meer doeltreffende oplossings is deur Alleo en jasaarim voorgestel. Jy kan np. convolve gebruik vir die volgende: Die modus argument spesifiseer hoe om die rande te hanteer. Ek het die geld af hier, want ek dink dis hoe die meeste mense verwag hardloop gemiddelde om te werk, maar jy kan ander prioriteite het. Hier is 'n plot wat die verskil tussen die modes illustreer: Jy kan 'n lopende bereken bedoel met: Gelukkig Numpy sluit 'n oprollen funksie wat ons kan gebruik om dinge te bespoedig. Die lopende gemiddelde is gelykstaande aan convolving x met 'n vektor wat N lang, met alle lede gelyk aan 1 / N. Die Numpy implementering van oprollen sluit die begin verbygaande, sodat jy die eerste N-1 punte te verwyder: Op my rekenaar, die vinnige weergawe is 20-30 keer vinniger, afhangende van die lengte van die insette vektor en grootte van die gemiddelde venster . Let daarop dat oprollen insluit 'n dieselfde modus wat lyk asof dit die begin verbygaande kwessie moet aanspreek, maar dit split dit tussen die begin en einde. Dit verwyder die verbygaande van die einde, en die begin doesn39t een het. Wel, ek dink it39s 'n kwessie van prioriteite, ek don39t dieselfde aantal resultate moet op die koste om 'n helling na nul dat isn39t daar in die data. BTW, hier is 'n opdrag aan die verskil tussen die modes vertoon: modes (39full39, 39same39, 39valid39) plot (oprollen (kinders ((200,)), kinders ((50,)) 4750, modem)) vir m in modes as (-10, 251, -.1, 1.1) legende (modes, loc39lower center39) (met pyplot en Numpy ingevoer). â € lapis 24 Maart 14 aan 13:56 pandas is meer geskik vir hierdie as Numpy of Scipy. Sy funksie rollingmean doen die werk maklik. Dit gee ook 'n Numpy verskeidenheid wanneer die insette is 'n skikking. Dit is moeilik rollingmean om te klop in die ding met 'n persoonlike suiwer Python implementering. Hier is 'n voorbeeld vertoning teen twee van die voorgestelde oplossings: Daar is ook lekker opsies oor hoe om te gaan met die rand waardes. I39m altyd vererg deur seinverwerking funksie wat uitset seine terugkeer van verskillende vorm as die insetseine wanneer beide insette en uitsette is van dieselfde aard (bv beide temporale seine). Dit breek die korrespondensie met verwante onafhanklike veranderlike (bv tyd, frekwensie) maak plot of vergelyking nie 'n direkte saak. In elk geval, as jy die gevoel te deel, kan jy die laaste reëls van die voorgestelde funksie as ynp. convolve (w / w. sum (), S, mode39same39) terugkeer ywindowlen-1 :-( windowlen-1) uitvoering maak Christelike verander O39Reilly 25 Augustus 15 by 19:56 lapis Ja, maar kan sê dat jy cumsum metode gebruik op die eerste blok en stoor jou rollende gemiddelde skikking vir die volgende blok. elke tik daarna moet jy net die nuutste bewegende gemiddelde waarde voeg tot jou rollende verskeidenheid in die stoor. Die gebruik van hierdie metode you39re nie herbereken dinge you39ve reeds bereken: Op die eerste regmerkie cumsum jy daarna jou net voeg die quotmean van die laaste tydperk elementsquot wat vinniger vir alle daaropvolgende bosluise is 2x. â € litepresence 10 Junie by 12: 29Die volgende voorbeelde gee 'n bewegende gemiddelde van die vorige VENSTER waardes. Ons afgestomp die eerste (VENSTER -1) waardes, aangesien ons die gemiddelde can8217t vind voor hulle uit. (Die verstek gedrag vir konvolusie is om te aanvaar dat waardes voor die aanvang van ons ry is 0). (Meer formeel, bou ons die volgorde y vir die volgorde x waar yi (xi x (i1) 8230. x (in)) / N) Dit maak gebruik van numpy8217s konvolusie funksie. Dit is 'n algemene doel bewegende gemiddelde operasie. Die verandering van gewigte maak 'n paar waardes belangriker verrekening toepaslik kan jy gemiddeld beskou as om punt eerder as voorheen punt. Eerder as om truncating waardes kan ons die aanvanklike waardes in plek te los, soos geïllustreer in die voorbeeld: Soos hierdie: Verwante Post navigasie Laat 'n antwoord Kanselleer antwoord Dankie vir die tip, ek het gevind dat dit nuttig Jy het 'n effense probleem in jou vaste aanvanklike waarde voorbeeld : 8220extendeddata8221 moet die een wat gekonvuleerde, nie 8220data8221. Dankie vir die spot wat I8217ve gewysig die voorbeeld. Nice punt, dankie. Ek het geweet daar moes 'n optimale manier vir Numpy te rol gemiddeldes bereken word. Van die dokumente (docs. scipy. org/doc/numpy/reference/generated/numpy. convolve), dit lyk asof jou resep nog meer bondige deur gebruik te maak van die mode8221valid8221 navraag in plaas van sny kan wees: gtgtgt VENSTER 10 gtgtgt data 1,2 , 3,4,5,5,5,5,5,5,5,5,5,5,5 gtgtgt gewigte numpy. repeat (1.0, venster) / venster gtgtgt numpy. convolve (data, gewigte) VENSTER-1 :-( VENSTER-1) opgestel (4. 4.4, 4.7, 4.9, 5. 5.) gtgtgt numpy. convolve (data, gewigte, 8216valid8217) array (4. 4.4, 4.7, 4.9, 5. 5.)


No comments:

Post a Comment