numpy standardafvigelse forklaret
denne vejledning forklarer, hvordan du bruger numpy standardafvigelsesfunktionen (AKA, np.kønssygdomme).
på et højt niveau er Numpy-standardafvigelsesfunktionen enkel. Den Beregner standardafvigelsen af værdierne i en Numpy array.
men detaljerne om præcis, hvordan funktionen fungerer, er lidt komplekse og kræver en forklaring.
når det er sagt, vil denne vejledning forklare, hvordan du bruger numpy standardafvigelsesfunktionen.
det vil forklare syntaksen for np.std (), og vise dig klare, trin-for-trin eksempler på, hvordan funktionen fungerer.
vejledningen er organiseret i sektioner. Du kan klikke på et af følgende links, som fører dig til det relevante afsnit.
Indholdsfortegnelse:
- en meget hurtig gennemgang af Numpy
- Introduktion til Numpy standardafvigelse
- syntaksen for NP.STD
- numpy standardafvigelse eksempler
- numpy standardafvigelse ofte stillede spørgsmål
når det er sagt, hvis du er relativt ny til Numpy, kan du læse hele tutorial.
- en hurtig gennemgang af Numpy
- Numpy er et værktøjssæt til at arbejde med numeriske data
- Numpy giver værktøjer til at manipulere Numpy arrays
- en hurtig introduktion til Numpy standardafvigelse
- en hurtig note, hvis du er ny til statistik
- syntaksen for np.STD
- en hurtig note: den nøjagtige syntaks afhænger af, hvordan du importerer Numpy
- np.STD syntaks
- parametrene for numpy.std
- a(påkrævet)
- axis
- dtype
- ddof
- out
- keepdims
- eksempler på, hvordan du bruger Numpy standardafvigelse
- Kør denne kode først
- eksempel 1: Beregn standardafvigelse for et 1-dimensionelt array
- Opret 1D array
- Beregn standard dev
- en hurtig note
- eksempel 2: Beregn standardafvigelsen for et 2-dimensionelt array
- Opret 2-dimensionelt array
- Beregn standardafvigelse med np.std
- eksempel 3: Beregn standardafvigelsen for kolonnerne
- Opret 2-dimensionelt array
- brug np.std for at beregne standardafvigelsen for kolonnerne
- forklaring
- eksempel 4: Brug np.std til at beregne standardafvigelserne for rækkerne
- Opret 2-dimensionelt array
- brug np.std til at beregne standardafvigelse af rækkerne
- forklaring
- eksempel 5: Skift frihedsgraderne
- Opret Numpy array
- Opret prøve
- Beregn standardafvigelsen for prøven
- forklaring
- eksempel 6: Brug keepdims-parameteren i NP.std
- Opret 2-dimensionelt array
- kontroller dimensionerne
- Beregn standardafvigelsen, og kontroller dimensionerne
- behold de oprindelige dimensioner, når vi bruger np.std
- ofte stillede spørgsmål om Numpy standardafvigelse
- spørgsmål 1: Hvorfor giver numpy std() et andet resultat end matlab std() eller et andet programmeringssprog?
- Efterlad dine andre spørgsmål i kommentarerne nedenfor
- Deltag i vores kursus for at lære mere om Numpy
en hurtig gennemgang af Numpy
lad os bare starte med en veeery hurtig gennemgang af Numpy.
Hvad er Numpy?
Numpy er et værktøjssæt til at arbejde med numeriske data
for at sige det enkelt er Numpy et værktøjssæt til at arbejde med numeriske data.
for det første har Numpy et sæt værktøjer til oprettelse af en datastruktur kaldet et numpy-array.
Du kan tænke på en Numpy array som en række-og-kolonne gitter af tal. Numpy arrays kan være 1-dimensionelle, 2-dimensionelle eller endda n-dimensionelle.
et 2D-array ser sådan ud:
for enkelhedens skyld holder vi os til 1 eller 2-dimensionelle arrays.
der er forskellige måder at oprette forskellige typer arrays med forskellige slags tal. Et par andre værktøjer til at skabe Numpy arrays omfatter numpy arrangere, numpy nuller, numpy dem, numpy flise, og andre metoder.
uanset hvordan du opretter dit Numpy array, på et højt niveau, er de simpelthen arrays af tal.
Numpy giver værktøjer til at manipulere Numpy arrays
Numpy giver ikke kun værktøjer til at skabe Numpy arrays, numpy giver også værktøjer til at arbejde med Numpy arrays.
nogle af de vigtigste af disse numpy-værktøjer er Numpy-funktioner til udførelse af beregninger.
Der er et helt sæt Numpy-funktioner til at gøre ting som:
- beregning af summen af et numpy-array
- beregning af det maksimale
- beregning af eksponentiel af tallene i et array
- beregning af værdien til en vis effekt for hver værdi i et Numpy-array
… og en række andre beregninger.
Numpy-standardafvigelsen er i det væsentlige meget som disse andre numpy-værktøjer. Det er bare bruges til at udføre en beregning (standardafvigelsen) af en gruppe af tal i en Numpy array.
en hurtig introduktion til Numpy standardafvigelse
på et meget højt niveau er standardafvigelse et mål for spredningen af et datasæt. Det er især et mål for, hvor langt datapunkterne er fra gennemsnittet af dataene.
lad os kort gennemgå den grundlæggende beregning.
standardafvigelse beregnes som kvadratroden af variansen.
så hvis vi har et datasæt med tal, vil variansen være:
og standardafvigelsen vil bare være kvadratroden af variansen:
hvor:
= de individuelle værdier i datasættet
= antallet af værdier i datasættet
= gennemsnittet af værdierne
det meste af tiden er beregning af standardafvigelse for hånd lidt udfordrende, fordi du skal beregne gennemsnittet, afvigelserne for hvert datapunkt fra gennemsnittet, derefter kvadratet af afvigelserne osv. Helt ærligt er det lidt kedeligt.
men hvis du arbejder i Python, kan du bruge funktionen Numpy standardafvigelse til at udføre beregningen for dig.
en hurtig note, hvis du er ny til statistik
fordi dette blogindlæg handler om at bruge numpy.std () funktion, Jeg ønsker ikke at komme for dybt ind i ukrudtet om, hvordan beregningen udføres manuelt. Denne tutorial handler virkelig om, hvordan vi bruger funktionen. Så hvis du har brug for en hurtig gennemgang af, hvad standardafvigelse er, kan du se denne video.
Ok. Når vi hurtigt har gennemgået, hvad standardafvigelse er, lad os se på syntaksen for np.kønssygdomme.
syntaksen for np.STD
syntaksen for numpy-standardafvigelsesfunktionen er ret enkel.
Jeg forklarer det på bare et sekund, men først vil jeg fortælle dig en hurtig note om Numpy syntaks.
en hurtig note: den nøjagtige syntaks afhænger af, hvordan du importerer Numpy
Når vi skriver Numpy-syntaks, bruger vi typisk aliaset “np”. Det er den fælles konvention blandt de fleste dataforskere.
for at indstille det alias skal du importere Numpy som denne:
import numpy as np
Hvis vi importerer Numpy med dette alias, kan vi kalde Numpy standardafvigelsesfunktionen somnp.std()
.
Ok, når det er sagt, lad os se nærmere på syntaksen.
np.STD syntaks
på et højt niveau, syntaksen for np.std ser sådan ud:
som jeg nævnte tidligere, forudsat at vi har importeret Numpy med aliaset “np
” vi kalder funktionen med syntaksennp.std()
.
så inde i parentesen er der flere parametre, der giver dig mulighed for at kontrollere nøjagtigt, hvordan funktionen fungerer.
lad os se på disse parametre.
parametrene for numpy.std
Der er et par vigtige parametre, du bør vide:
a
axis
dtype
ddof
keepdims
out
lad os se på hver af dem.
a
(påkrævet)
parameterena
angiver det array af værdier, som du vil beregne standardafvigelsen over.
sagt anderledes, Dette giver dig mulighed for at angive input array til funktionen.
passende indgange omfatter Numpy arrays, men også “array lignende” objekter såsom Python lister.
det er vigtigt, at du giver et input til denne parameter. Et input er påkrævet.
når det er sagt, kan parameteren selv være implicit eller eksplicit. Hvad jeg mener med det er, at du direkte kan skrive parameteren a=
, eller du kan forlade parameteren ud af din syntaks og bare skrive navnet på dit input array.
Jeg vil vise dig eksempler på dette i eksempel 1.
axis
akseparameteren giver dig mulighed for at specificere en akse, langs hvilken standardafvigelsen beregnes.
for at forstå dette skal du virkelig forstå akser.
Numpy arrays har akser.
Du kan tænke på en” akse ” som en retning langs arrayet.
i et 2-dimensionelt array vil der være 2 akser: akse-0 og akse-1.
i et 2D-array peger akse-0 nedad langs rækkerne og akse-1 peger vandret langs kolonnerne.
visuelt kan du visualisere akserne i et 2D-array som dette:
Ved hjælp af parameterenaxis
kan du beregne standardafvigelsen i en bestemt retning langs arrayet.
dette illustreres bedst med eksempler, så jeg viser dig et eksempel i eksempel 2.
(for en fuldstændig forklaring af Numpy array akser, se vores tutorial kaldet Numpy akser forklaret.)
dtype
(valgfrit)
parameterendtype
giver dig mulighed for at angive den datatype, du vil bruge, når np.std Beregner standardafvigelsen.
hvis dataene i inputarrayet er heltal, vil dette som standard være float64
.
ellers, hvis dataene i inputarrayet flyder, vil dette som standard være den samme float-type som inputarrayet.
ddof
(valgfrit)
Dette giver dig mulighed for at specificere “frihedsgrader” til beregningen.
for at forstå dette skal du se på ligning 2 igen.
i denne ligning er det første udtryk.
husk: er antallet af værdier i arrayet eller datasættet.
men hvis vi tænker statistisk, er der faktisk en forskel mellem at beregne en populationsstandardafvigelse vs en stikprøvestandardafvigelse.
Hvis vi beregner en populationsstandardafvigelse, bruger vi udtrykket i vores ligning.
men når vi beregner standardafvigelsen på en prøve af data (en prøve afdatapoints), så er vi nødt til at ændre ligningen, så det førende udtryk er. I så fald bliver ligningen for en prøvestandardafvigelse:
hvordan implementerer vi dette med NP.std?
Vi kan gøre dette med parameterenddof
ved at indstilleddof = 1
.
og faktisk kan vi indstille ddof
sigt mere generelt. Når vi bruger ddof
, vil det ændre standardafvigelsesberegningen til at blive:
for at være ærlig er dette lidt teknisk. Hvis du har brug for at lære mere om dette, du skal se denne video på Khan academy om frihedsgrader, og befolkning vs prøve standardafvigelse.
out
(valgfrit)
parameterenout
giver dig mulighed for at specificere et alternativt array, hvor output skal placeres.
det skal have samme form som det forventede output.
keepdims
(valgfrit) keepdims
parameter kan bruges til at “holde” det oprindelige antal dimensioner. Når du indstiller keepdims = True
, vil output have det samme antal dimensioner som input.
Husk: når vi beregner standardafvigelsen, vil beregningen “kollapse” antallet af dimensioner.
for eksempel, hvis vi indtaster et 2-dimensionelt array som input, så som standard np.std udsender et nummer. En skalar værdi.
men hvis vi ønsker, at output skal være et tal inden for et 2D-array (dvs.et outputarray med de samme dimensioner som input), kan vi indstillekeepdims = True
.
for at være ærlig er nogle af disse parametre lidt abstrakte, og jeg tror, de vil give meget mere mening med eksempler.
lad os se på nogle eksempler.
eksempler på, hvordan du bruger Numpy standardafvigelse
Her gennemgår vi et par eksempler. Vi starter simpelt og derefter øge kompleksiteten.
eksempler:
- Beregn standardafvigelse for et 1-dimensionelt array
- Beregn standardafvigelsen for et 2-dimensionelt array
- brug np.std for at beregne standardafvigelserne for kolonnerne
- brug np.std for at beregne standardafvigelserne for rækkerne
- ændre frihedsgraderne
- brug parameteren keepdims i np.std
Kør denne kode først
før du kører en af eksempelkoden, skal du importere Numpy.
for at gøre dette kan du køre følgende kode:
import numpy as np
dette importerer Numpy med aliaset “np
“.
eksempel 1: Beregn standardafvigelse for et 1-dimensionelt array
Her starter vi simpelt.
Vi skal beregne standardafvigelsen for 1-dimensionelt numpy array.
Opret 1D array
først opretter vi bare vores 1D array:
array_1d = np.array()
Beregn standard dev
nu beregner vi standardafvigelsen for disse tal.
np.std(array_1d)
OUT:
30.84369195367723
Så hvad skete der her?
np.STD-funktion beregnede bare standardafvigelsen for tallene ved hjælp af ligning 2, som vi så tidligere. Hvert tal er et af
en hurtig note
i ovenstående eksempel brugte vi ikke eksplicit parameterena=
. Det skyldes np.std forstår, at når vi giver et argument til funktionen som i koden np.std(array_1d)
, skal indgangen sendes til a
parameter.
Alternativt kan du også eksplicit brugea=
parameter:
np.std(a = array_1d)
OUT:
30.84369195367723
eksempel 2: Beregn standardafvigelsen for et 2-dimensionelt array
Ok. Lad os nu se på et eksempel med et 2-dimensionelt array.
Opret 2-dimensionelt array
Her skal vi oprette et 2D-array ved hjælp af np.tilfældig.randint funktion.
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
dette array har 3 rækker og 4 kolonner.
lad os udskrive det, så vi kan se det.
print(array_2d)
OUT:
]
Dette er bare et 2D-array, der indeholder 12 tilfældige heltal mellem 0 og 20.
Beregn standardafvigelse med np.std
Okay, lad os beregne standardafvigelsen.
np.std(array_2d)
ud:
5.007633062524539
Her, numpy.std () beregner bare standardafvigelsen for alle 12 heltal.
standardafvigelsen er5.007633062524539
.
eksempel 3: Beregn standardafvigelsen for kolonnerne
nu skal vi beregne standardafvigelsen for kolonnerne.
for at gøre dette skal vi bruge parameteren axis
. (Du lærte om parameteren axis
i afsnittet om parametrene for numpy.std)
specifikt skal vi indstille axis = 0
.
hvorfor?
som jeg nævnte i forklaringen af axis
parameter tidligere, Numpy arrays har akser.
i et todimensionelt array er akse-0 den akse, der peger nedad.
Når vi bruger numpy.std med axis = 0
, der beregner standardafvigelserne nedad i aksen-0 retning.
lad os se på et eksempel, så du kan se, hvad jeg mener.
Opret 2-dimensionelt array
først opretter vi et 2D-array ved hjælp af np.tilfældig.randint funktion.
(Dette er det samme array, som vi oprettede i eksempel 2, så hvis du allerede har oprettet det, skal du ikke oprette det igen.)
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
lad os udskrive det, så vi kan se det.
print(array_2d)
OUT:
]
Dette er bare et 2D-array, der indeholder heltal mellem 0 og 20.
brug np.std for at beregne standardafvigelsen for kolonnerne
nu indstiller vi axis = 0
inde i np.std at beregne standardafvigelser af kolonnerne.
np.std(array_2d, axis = 0)
ud:
array()
forklaring
Hvad sker der her?
Når vi bruger np.std med axis = 0
, numpy Beregner standardafvigelsen nedad i aksen-0 retning. Husk, som jeg nævnte ovenfor, akse – 0 peger nedad.
dette har den virkning at beregne standardafvigelsen for hver kolonne i numpy-arrayet.
lad os nu lave et lignende eksempel med rækken standardafvigelser.
eksempel 4: Brug np.std til at beregne standardafvigelserne for rækkerne
nu skal vi bruge np.std at beregne standardafvigelser vandret langs en 2D numpy array.
Husk hvad jeg sagde tidligere: numpy arrays har akser. Akserne er som retninger langs Numpy-arrayet. I et 2D-array peger akse-1 vandret som dette:
så hvis vi vil beregne standardafvigelserne vandret, kan vi indstilleaxis = 1
. Dette har den virkning at beregne rækken standardafvigelser.
lad os tage et kig.
Opret 2-dimensionelt array
for at køre dette eksempel har vi igen brug for et 2D Numpy-array, så vi opretter et 2D-array ved hjælp af np.tilfældig.randint funktion.
(Dette er det samme array, som vi oprettede i eksempel 2, så hvis du allerede har oprettet det, skal du ikke oprette det igen.)
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
lad os udskrive det, så vi kan se det.
print(array_2d)
OUT:
]
Dette er bare et 2D-array, der indeholder heltal mellem 0 og 20.
brug np.std til at beregne standardafvigelse af rækkerne
nu bruger vi np.std med axis = 1
for at beregne standardafvigelserne for rækkerne.
np.std(array_2d, axis = 1)
ud:
array()
forklaring
Hvis du forstod eksempel 3, skulle dette nye eksempel give mening.
Når vi bruger np.STD og set axis = 1
, numpy beregner standardafvigelserne vandret langs akse-1.
effektivt, når vi bruger Numpy standardafvigelse medaxis = 1
, beregner funktionen standardafvigelsen for rækkerne.
eksempel 5: Skift frihedsgraderne
lad os nu ændre frihedsgraderne.
her i dette eksempel skal vi oprette et stort udvalg af tal, tage en prøve fra det array og beregne standardafvigelsen på den prøve.
lad os først oprette vores arrays.
Opret Numpy array
først opretter vi bare et normalt distribueret numpy array med et gennemsnit på 0 og en standardafvigelse på 10.
for at gøre dette bruger vi numpy tilfældig normal funktion. Bemærk, at vi bruger numpy random seed-funktionen til at indstille frøet til random number generator. For mere information om dette, læs vores tutorial om np.tilfældig.frø.
np.random.seed(22)population_array = np.random.normal(size = 100, loc = 0, scale = 10)
Ok. Nu har vi et Numpy array, population_array
, der har 100 elementer, der har et gennemsnit på 0 og en standardafvigelse på 10.
Opret prøve
nu bruger vi Numpy random choice til at tage en tilfældig prøve fra Numpy-arrayet,population_array
.
np.random.seed(22)sample_array = np.random.choice(population_array, size = 10)
dette nye array,sample_array
, er en tilfældig prøve af 10 elementer frapopulation_array
.
Vi brugersample_array
når vi beregner vores standardafvigelse ved hjælp af parameterenddof
.
Beregn standardafvigelsen for prøven
nu beregner vi standardafvigelsen for prøven.
specifikt skal vi bruge numpy-standardafvigelsesfunktionen medddof
parameteren indstillet tilddof = 1
.
np.std(sample_array, ddof = 1)
OUT:
10.703405562234051
forklaring
Her har vi beregnet:
og når vi indstiller ddof = 1
, ligningen evalueres til:
for at være klar, når du beregner standardafvigelsen for en prøve, indstiller du ddof = 1
.
for at være ærlig er detaljerne om hvorfor lidt tekniske (og uden for rammerne af dette indlæg), så for mere information om beregning af en prøvestandardafvigelse anbefaler jeg, at du ser denne video.
Husk, at du i nogle andre tilfælde kan indstilleddof
til andre værdier udover 1 eller 0. Hvis du slet ikke bruger parameteren ddof
, vil den som standard være 0.
uanset hvilken værdi du vælger, beregner numpy-standardafvigelsesfunktionen standardafvigelsen med ligningen:
eksempel 6: Brug keepdims-parameteren i NP.std
Ok. Endelig vil vi gøre et sidste eksempel.
Her skal vi indstillekeepdims
parameter tilkeepdims = True
.
Opret 2-dimensionelt array
først opretter vi et 2D-array ved hjælp af np.tilfældig.randint funktion.
(Dette er det samme array, som vi oprettede i eksempel 2, så hvis du allerede har oprettet det, skal du ikke oprette det igen.)
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
lad os udskrive det:
print(array_2d)
OUT:
]
kontroller dimensionerne
lad os nu se på dimensionerne af dette array.
array_2d.ndim
OUT:
2
Dette er et 2D-array, ligesom vi havde til hensigt.
Beregn standardafvigelsen, og kontroller dimensionerne
Ok. Nu skal vi beregne standardafvigelsen og kontrollere dimensionerne af output.
output = np.std(array_2d)
lad os hurtigt udskrive output:
print(output)
OUT:
5.007633062524539
så standardafvigelsen er 5.007633062524539.
nu, Hvad er dimensionerne af output?
output.ndim
ud:
0
udgangen har 0 dimensioner (det er en skalar værdi).
hvorfor?
Når np.std Beregner standardafvigelsen, det beregner en sammenfattende statistik. I dette tilfælde tager funktionen et stort antal værdier og kollapser dem ned til en enkelt metrisk.
så indgangen var 2-dimensionel, men udgangen er 0-dimensionel.
Hvad hvis vi vil ændre det?
Hvad hvis vi ønsker, at output teknisk set har 2-dimensioner?
Vi kan gøre det med parameteren keepdims
.
behold de oprindelige dimensioner, når vi bruger np.std
Her indstiller vikeepdims = True
for at gøre output de samme dimensioner som input.
output_2d = np.std(array_2d, keepdims = True)
lad os nu se på output:
print(output_2d)
OUT:
]
Bemærk, at output, standardafvigelsen, stadig er 5.00763306. Men resultatet er lukket inde i dobbeltbeslag.
lad os inspicere output_2d
og se nærmere på.
type(output_2d)
OUT:
numpy.ndarray
så output_2d
er et Numpy array, ikke en skalær værdi.
lad os kontrollere dimensionerne:
output_2d.ndim
OUT:
2
dette numpy array,output_2d
, har 2 dimensioner.
Dette er det samme antal dimensioner som input.
Hvad skete der?
Når vi indstillerkeepdims = True
, der forårsagede np.std-funktion til at producere et output med det samme antal dimensioner som input. Selvom der ikke er nogen rækker og kolonner i output, har output output_2d
2 dimensioner.
så hvis du nogensinde har brug for dit output for at have det samme antal dimensioner som dit input, kan du indstillekeepdims = True
.
(Dette fungerer også, når du bruger parameteren axis
… prøv det!)
ofte stillede spørgsmål om Numpy standardafvigelse
nu hvor du har lært om Numpy standardafvigelse og set nogle eksempler, lad os gennemgå nogle ofte stillede spørgsmål om np.kønssygdomme.
ofte stillede spørgsmål:
- Hvorfor giver numpy std() et andet resultat end matlab std () eller et andet programmeringssprog?
spørgsmål 1: Hvorfor giver numpy std() et andet resultat end matlab std() eller et andet programmeringssprog?
den enkle grund er, at matlab beregner standard dev i henhold til følgende:
(mange andre værktøjer bruger den samme ligning.)
numpy beregner dog med følgende:
Bemærk den subtile forskel mellem vs .
for at løse dette kan du bruge parameteren ddof
i numpy.
Hvis du bruger np.std med parameteren ddof
indstillet til ddof = 1
, skal du få det samme svar som matlab.
Efterlad dine andre spørgsmål i kommentarerne nedenfor
har du andre spørgsmål om Numpy-standardafvigelsesfunktionen?
efterlad dit spørgsmål i kommentarfeltet nedenfor.
Deltag i vores kursus for at lære mere om Numpy
de eksempler, du har set i denne tutorial, skal være nok til at komme i gang, men hvis du er seriøs med at lære Numpy, skal du tilmelde dig vores premium-kursus kaldet Numpy Mastery.
der er meget mere at lære om Numpy, og Numpy Mastery vil lære dig alt, herunder:
- Sådan oprettes Numpy arrays
- Sådan bruges numpy tilfældige funktioner
- hvad funktionen “numpy random seed” gør
- sådan omformes, opdeles og kombineres dine Numpy arrays
- og mere …
desuden hjælper det dig med at mestre syntaksen inden for et par uger. Du vil opdage, hvordan man bliver “flydende” skriftligt Numpy kode.
Find ud af mere her:
Lær mere om Numpy Mastery