Articles

Numpy deviazione standard explained

Questo tutorial vi spiegherà come utilizzare la funzione di deviazione standard Numpy (AKA, np.std).

Ad un livello elevato, la funzione di deviazione standard Numpy è semplice. Calcola la deviazione standard dei valori in un array Numpy.

Ma i dettagli di come funziona esattamente la funzione sono un po ‘ complessi e richiedono qualche spiegazione.

Detto questo, questo tutorial spiegherà come utilizzare la funzione di deviazione standard Numpy.

Spiegherà la sintassi di np.std (), e vi mostrerà chiaro, esempi passo-passo di come funziona la funzione.

Il tutorial è organizzato in sezioni. È possibile fare clic su uno dei seguenti link, che vi porterà alla sezione appropriata.

Sommario:

  • Una rapida revisione di Numpy
  • Introduzione alla deviazione standard Numpy
  • La sintassi di np.std
  • Esempi di deviazione standard Numpy
  • FAQ di deviazione standard Numpy

Detto questo, se sei relativamente nuovo a Numpy, potresti voler leggere l’intero tutorial.

Una rapida recensione di Numpy

Cominciamo con una rapida recensione veeeery di Numpy.

Che cos’è Numpy?

Numpy è un toolkit per lavorare con dati numerici

Per dirla semplicemente, Numpy è un toolkit per lavorare con dati numerici.

Innanzitutto, Numpy ha un set di strumenti per creare una struttura dati chiamata array Numpy.

Puoi pensare a un array Numpy come una griglia di numeri di riga e colonna. Gli array Numpy possono essere 1-dimensionali, 2-dimensionali o anche n-dimensionali.

Un array 2D assomiglia a questo:

Un esempio di un array NumPy 2-dimensionale con i numeri da 0 a 7.

Per semplicità, in questo tutorial, ci atterremo a 1 o 2-dimentional array.

Esistono vari modi per creare diversi tipi di array con diversi tipi di numeri. Alcuni altri strumenti per la creazione di array Numpy includono numpy arrange, numpy zeri, numpy ones, numpy tile e altri metodi.

Indipendentemente da come crei il tuo array Numpy, ad un livello elevato, sono semplicemente array di numeri.

Numpy fornisce strumenti per manipolare array Numpy

Numpy non solo fornisce strumenti per la creazione di array Numpy, Numpy fornisce anche strumenti per lavorare con array Numpy.

Alcuni dei più importanti di questi strumenti Numpy sono funzioni Numpy per eseguire calcoli.

C’è un intero set di funzioni Numpy per fare cose come:

  • calcolo della somma di un array Numpy
  • calcolo del massimo
  • calcolo dell’esponenziale dei numeri in un array
  • calcolo del valore x ad una certa potenza, per ogni valore in un array Numpy

… e una varietà di altri calcoli.

La deviazione standard Numpy è essenzialmente molto simile a questi altri strumenti Numpy. È solo usato per eseguire un calcolo (la deviazione standard) di un gruppo di numeri in un array Numpy.

Una rapida introduzione alla deviazione standard Numpy

Ad un livello molto alto, la deviazione standard è una misura della diffusione di un set di dati. In particolare, è una misura di quanto i datapoint sono lontani dalla media dei dati.

Esaminiamo brevemente il calcolo di base.

La deviazione standard viene calcolata come radice quadrata della varianza.

Quindi se abbiamo un set di dati conN numeri, la varianza sarà:

\begin{equation*} \frac{1}{N} \displaystyle\sum_{i=1}^N x_i - \overline{x})^2 \end{equation*}

E la deviazione standard sarà la radice quadrata della varianza:

\begin{equation*} \sqrt{\frac{1}{N} \displaystyle\sum_{i=1}^N x_i - \overline{x})^2} \end{equation*}

Dove:

x_i = i singoli valori del set di dati
N = numero di valori del set di dati
\overline{x} = media dei valori x_i

la Maggior parte del tempo, il calcolo della deviazione standard con la mano è un po ‘ difficile, perché è necessario calcolare la media, la deviazione di ciascun punto di dati dalla media, poi la piazza del deviazioni, etc. Francamente, è un po ‘ noioso.

Tuttavia, se stai lavorando in Python, puoi utilizzare la funzione di deviazione standard Numpy per eseguire il calcolo per te.

Una breve nota se sei nuovo alle statistiche

Perché questo post del blog riguarda l’utilizzo di numpy.funzione std (), non voglio entrare troppo in profondità nelle erbacce su come il calcolo viene eseguito a mano. Questo tutorial è davvero su come usiamo la funzione. Quindi, se hai bisogno di una rapida revisione di quale sia la deviazione standard, puoi guardare questo video.

Ok. Dopo aver esaminato rapidamente quale sia la deviazione standard, diamo un’occhiata alla sintassi per np.std.

La sintassi di np.std

La sintassi della funzione di deviazione standard Numpy è abbastanza semplice.

Lo spiegherò in un secondo, ma prima, voglio dirti una breve nota sulla sintassi Numpy.

Una breve nota: la sintassi esatta dipende da come si importa Numpy

In genere, quando scriviamo la sintassi Numpy, usiamo l’alias “np”. Questa è la convenzione comune tra la maggior parte dei data scientist.

Per impostare quell’alias, devi importare Numpy in questo modo:

import numpy as np

Se importiamo Numpy con questo alias, possiamo chiamare la funzione di deviazione standard Numpy comenp.std().

Ok, detto questo, diamo un’occhiata più da vicino alla sintassi.

np.sintassi std

Ad un livello elevato, la sintassi per np.std ha un aspetto simile a questo:

Un'immagine che spiega la sintassi della deviazione standard Numpy.

Come ho detto prima, supponendo che abbiamo importato Numpy con l’alias “np” chiamiamo la funzione con la sintassi np.std().

Quindi all’interno della parentesi, ci sono diversi parametri che consentono di controllare esattamente come funziona la funzione.

Diamo un’occhiata a questi parametri.

I parametri di numpy.std

Ci sono alcuni parametri importanti che dovresti sapere:

  • a
  • axis
  • dtype
  • ddof
  • keepdims
  • out

diamo un’occhiata a ciascuno di essi.

a (obbligatorio)

Il parametroa specifica l’array di valori su cui si desidera calcolare la deviazione standard.

Detto in modo diverso, questo consente di specificare l’array di input per la funzione.

Gli input appropriati includono array Numpy, ma anche oggetti “array like” come elenchi Python.

Importante, è necessario fornire un input per questo parametro. È richiesto un input.

Detto questo, il parametro stesso può essere implicito o esplicito. Quello che intendo con questo, è che puoi digitare direttamente il parametroa=, OPPURE puoi lasciare il parametro fuori dalla tua sintassi e basta digitare il nome del tuo array di input.

Ti mostrerò esempi di questo nell’esempio 1.

axis

Il parametro axis consente di specificare un asse lungo il quale verrà calcolata la deviazione standard.

Per capire questo, devi davvero capire gli assi.

Gli array Numpy hanno assi.

Puoi pensare a un “asse” come una direzione lungo l’array.

In un array 2-dimensionale, ci saranno 2 assi: asse-0 e asse-1.

In un array 2D, axis-0 punta verso il basso lungo le righe e axis-1 punta orizzontalmente lungo le colonne.

Visivamente, è possibile visualizzare gli assi di un array 2D come questo:

Un esempio visivo di assi di array NumPy.

Utilizzando il parametroaxis, è possibile calcolare la deviazione standard in una particolare direzione lungo l’array.

Questo è meglio illustrato con esempi, quindi ti mostrerò un esempio nell’esempio 2.

(Per una spiegazione completa degli assi degli array Numpy, vedi il nostro tutorial chiamato Numpy axes explained.)

dtype

(opzionale)
Il parametro dtype consente di specificare il tipo di dati che si desidera utilizzare quando np.std calcola la deviazione standard.

Se i dati nell’array di input sono numeri interi, questo sarà predefinito su float64.

Altrimenti, se i dati nell’array di input sono float, questo verrà impostato di default sullo stesso tipo float dell’array di input.

ddof

(opzionale)
Consente di specificare i “gradi di libertà” per il calcolo.

Per capire questo, è necessario guardare di nuovo l’equazione 2.

\

In questa equazione, il primo termine è\frac{1}{N}.

Ricorda:N è il numero di valori nell’array o nel set di dati.

Ma se stiamo pensando in termini statistici, c’è in realtà una differenza tra il calcolo di una deviazione standard della popolazione rispetto a una deviazione standard del campione.

Se calcoliamo una deviazione standard della popolazione, usiamo il termine\frac{1}{N} nella nostra equazione.

Tuttavia, quando calcoliamo la deviazione standard su un campione di dati (un campione din datapoints), allora dobbiamo modificare l’equazione in modo che il termine iniziale sia\frac{1}{n - 1}. In questo caso, l’equazione per una deviazione standard del campione diventa:

\begin{equation*} s_{esempio} = \sqrt{\frac{1}{n - 1} \displaystyle\sum_{i=1}^N x_i - \overline{x})^2} \end{equation*}

Come implementare questo con np.std?

Possiamo farlo con il parametro ddof, impostando ddof = 1.

E in effetti, possiamo impostare il termine ddof più in generale. Quando si usa ddof, che modifica la deviazione standard di calcolo per diventare:

\begin{equation*} \sqrt{\frac{1}{n - ddof} \displaystyle\sum_{i=1}^N x_i - \overline{x})^2} \end{equation*}

Per essere onesti, questo è un po ‘ di tecnica. Se hai bisogno di saperne di più su questo, dovresti guardare questo video alla Khan Academy sui gradi di libertà e sulla popolazione rispetto alla deviazione standard del campione.

out

(opzionale)
Il parametroout consente di specificare un array alternativo in cui inserire l’output.

Dovrebbe avere la stessa forma dell’output previsto.

keepdims

(opzionale)
Ilkeepdims parametro può essere utilizzato per “mantenere” il numero originale di dimensioni. Quando si imposta keepdims = True, l’output avrà lo stesso numero di dimensioni dell’input.

Ricorda: quando calcoliamo la deviazione standard, il calcolo “collasserà” il numero di dimensioni.

Ad esempio, se inseriamo un array 2-dimensionale come input, quindi per impostazione predefinita, np.std produrrà un numero. Un valore scalare.

Ma se vogliamo che l’output sia un numero all’interno di un array 2D (cioè un array di output con le stesse dimensioni dell’input), allora possiamo impostare keepdims = True.

Per essere onesti, alcuni di questi parametri sono un po ‘ astratti, e penso che avranno molto più senso con gli esempi.

Diamo un’occhiata ad alcuni esempi.

Esempi di come utilizzare Numpy deviazione standard

Qui, lavoreremo attraverso alcuni esempi. Inizieremo semplice e quindi aumentare la complessità.

Esempi:

  • Calcola la deviazione standard di un array 1-dimensionale
  • Calcola la deviazione standard di un array 2-dimensionale
  • Usa np.std per calcolare le deviazioni standard delle colonne
  • Usa np.std per calcolare le deviazioni standard delle righe
  • Modificare i gradi di libertà
  • Utilizzare il parametro keepdims in np.std

Esegui prima questo codice

Prima di eseguire qualsiasi codice di esempio, devi importare Numpy.

Per fare ciò, puoi eseguire il seguente codice:

import numpy as np

Questo importerà Numpy con l’alias “np“.

ESEMPIO 1: Calcolare la deviazione standard di un array 1 dimensionale

Qui, inizieremo semplice.

Stiamo andando a calcolare la deviazione standard di matrice Numpy 1-dimensionale.

Crea array 1D

Per prima cosa, creeremo il nostro array 1D:

array_1d = np.array()
Calcola lo standard dev

Ora, calcoleremo la deviazione standard di quei numeri.

np.std(array_1d)

OUT:

30.84369195367723

Quindi cosa è successo qui?

Il np.la funzione std ha appena calcolato la deviazione standard dei numeri usando l’equazione 2 che abbiamo visto in precedenza. Ogni numero è uno dei x_i in quell’equazione.

Una breve nota

Nell’esempio precedente, non abbiamo utilizzato esplicitamente il parametroa=. Questo perché np.std capisce che quando forniamo un argomento alla funzione come nel codice np.std(array_1d), l’input deve essere passato al parametro a.

In alternativa, è anche possibile utilizzare esplicitamente il parametroa=:

np.std(a = array_1d)

OUT:

30.84369195367723

ESEMPIO 2: Calcolare la deviazione standard di un array bidimensionale

Ok. Ora, diamo un’occhiata a un esempio con un array 2-dimensionale.

Crea array 2-dimensionale

Qui, stiamo andando a creare un array 2D, utilizzando il np.casuale.funzione randint.

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Questo array ha 3 righe e 4 colonne.

Stampiamolo, così possiamo vederlo.

print(array_2d)

OUT:

 ]

Questo è solo un array 2D che contiene 12 numeri interi casuali tra 0 e 20.

Calcola la deviazione standard con np.std

Ok, calcoliamo la deviazione standard.

np.std(array_2d)

FUORI:

5.007633062524539

Qui, numpy.std () sta solo calcolando la deviazione standard di tutti i 12 interi.

La deviazione standard è 5.007633062524539.

ESEMPIO 3: Calcola la deviazione standard delle colonne

Ora, stiamo andando a calcolare la deviazione standard delle colonne.

Per fare ciò, dobbiamo usare il parametro axis. (Hai imparato a conoscere il parametroaxis nella sezione sui parametri di numpy.std)

In particolare, abbiamo bisogno di impostare axis = 0.

Perché?

Come ho già detto nella spiegazione del parametroaxis, gli array Numpy hanno assi.

In un array bidimensionale, l’asse-0 è l’asse che punta verso il basso.

Un array NumPy che mostra che axis = 0 è l'asse lungo le righe dell'array.

Quando usiamo numpy.std con axis = 0, che calcolerà le deviazioni standard verso il basso nella direzione dell’asse-0.

Diamo un’occhiata a un esempio in modo da poter vedere cosa intendo.

Crea array 2-dimensionale

Per prima cosa, creeremo un array 2D, usando np.casuale.funzione randint.

(Questo è lo stesso array che abbiamo creato nell’esempio 2, quindi se lo hai già creato, non dovresti aver bisogno di crearlo di nuovo.)

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Stampiamolo, così possiamo vederlo.

print(array_2d)

OUT:

 ]

Questo è solo un array 2D che contiene numeri interi tra 0 e 20.

Usa np.std per calcolare la deviazione standard delle colonne

Ora, imposteremo axis = 0 all’interno di np.std per calcolare le deviazioni standard delle colonne.

np.std(array_2d, axis = 0)

OUT:

array()
Spiegazione

Cosa sta succedendo qui?

Quando usiamo np.std conaxis = 0, Numpy calcolerà la deviazione standard verso il basso nella direzione dell’asse-0. Ricorda, come ho detto sopra, l’asse – 0 punta verso il basso.

Questo ha l’effetto di calcolare la deviazione standard di ogni colonna dell’array Numpy.

Un'immagine che mostra come utilizzare la deviazione standard Numpy con axis = 0 per calcolare le deviazioni standard della colonna.

Ora, facciamo un esempio simile con le deviazioni standard della riga.

ESEMPIO 4: Usa np.std per calcolare le deviazioni standard delle righe

Ora, useremo np.std per calcolare le deviazioni standard orizzontalmente lungo un array numpy 2D.

Ricorda quello che ho detto prima: gli array numpy hanno assi. Gli assi sono come le direzioni lungo l’array Numpy. In un array 2D, axis-1 punta orizzontalmente, in questo modo:

Un'immagine che mostra come axis-1 punti orizzontalmente lungo un array Numpy 2D.

Quindi, se vogliamo calcolare le deviazioni standard orizzontalmente, possiamo impostareaxis = 1. Ciò ha l’effetto di calcolare le deviazioni standard della riga.

Diamo un’occhiata.

Crea array 2-dimensionale

Per eseguire questo esempio, avremo ancora bisogno di un array Numpy 2D, quindi creeremo un array 2D usando np.casuale.funzione randint.

(Questo è lo stesso array che abbiamo creato nell’esempio 2, quindi se lo hai già creato, non dovresti aver bisogno di crearlo di nuovo.)

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Stampiamolo, così possiamo vederlo.

print(array_2d)

OUT:

 ]

Questo è solo un array 2D che contiene numeri interi tra 0 e 20.

Usa np.std per calcolare la deviazione standard delle righe

Ora, useremo np.std con axis = 1 per calcolare le deviazioni standard delle righe.

np.std(array_2d, axis = 1)

FUORI:

array()
Spiegazione

Se hai compreso l’esempio 3, questo nuovo esempio dovrebbe avere senso.

Quando usiamo np.std e set axis = 1, Numpy calcolerà le deviazioni standard orizzontalmente lungo l’asse-1.

Un'immagine che mostra usando np.std con asse = 1 per calcolare le deviazioni standard di riga.

Effettivamente, quando usiamo Numpy deviazione standard conaxis = 1, la funzione calcola la deviazione standard delle righe.

ESEMPIO 5: Cambiare i gradi di libertà

Ora, cambiamo i gradi di libertà.

Qui in questo esempio, stiamo andando a creare una vasta gamma di numeri, prendere un campione da quella matrice, e calcolare la deviazione standard su quel campione.

Per prima cosa, creiamo i nostri array.

Crea array Numpy

Per prima cosa, creeremo un array Numpy normalmente distribuito con una media di 0 e una deviazione standard di 10.

Per fare ciò, useremo la funzione normale casuale Numpy. Si noti che stiamo usando la funzione seme casuale Numpy per impostare il seme per il generatore di numeri casuali. Per ulteriori informazioni su questo, leggi il nostro tutorial su np.casuale.seme.

np.random.seed(22)population_array = np.random.normal(size = 100, loc = 0, scale = 10)

Ok. Ora abbiamo un array Numpy, population_array, che ha 100 elementi che hanno una media di 0 e una deviazione standard di 10.

Crea campione

Ora, useremo Numpy scelta casuale per prendere un campione casuale dalla matrice Numpy,population_array.

np.random.seed(22)sample_array = np.random.choice(population_array, size = 10)

Questo nuovo array,sample_array, è un campione casuale di 10 elementi dapopulation_array.

Useremosample_array quando calcoliamo la nostra deviazione standard usando il parametroddof.

Calcola la deviazione standard del campione

Ora, calcoleremo la deviazione standard del campione.

In particolare, useremo la funzione di deviazione standard Numpy con il parametroddof impostato suddof = 1.

np.std(sample_array, ddof = 1)

OUT:

10.703405562234051
Spiegazione

Qui, abbiamo calcolato:

\

E quando abbiamo impostato ddof = 1, l’equazione valuta:

\

Per essere chiari, quando si calcola la deviazione standard di un campione, si imposta ddof = 1.

Per essere onesti, i dettagli sul perché sono un po ‘ tecnici (e oltre lo scopo di questo post), quindi per ulteriori informazioni sul calcolo di una deviazione standard di esempio, ti consiglio di guardare questo video.

Tieni presente che per alcune altre istanze, puoi impostareddof su altri valori oltre a 1 o 0. Se non si utilizza il parametroddof, il valore predefinito sarà 0.

Indipendentemente dal valore selezionato, la funzione di deviazione standard Numpy calcolerà la deviazione standard con l’equazione:

\

ESEMPIO 6: Utilizzare il parametro keepdims in np.std

Ok. Infine, faremo un ultimo esempio.

Qui, impostiamo il parametro keepdims su keepdims = True.

Crea array 2-dimensionale

Per prima cosa, creeremo un array 2D, usando np.casuale.funzione randint.

(Questo è lo stesso array che abbiamo creato nell’esempio 2, quindi se lo hai già creato, non dovresti aver bisogno di crearlo di nuovo.)

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Stampiamolo:

print(array_2d)

OUT:

 ]
Controlla le dimensioni

Ora diamo un’occhiata alle dimensioni di questo array.

array_2d.ndim

OUT:

2

Questo è un array 2D, proprio come volevamo.

Calcola la deviazione standard e controlla le dimensioni

Ok. Ora, calcoleremo la deviazione standard e controlleremo le dimensioni dell’output.

output = np.std(array_2d)

Stampiamo rapidamente l’output:

print(output)

OUT:

5.007633062524539

Quindi la deviazione standard è 5.007633062524539.

Ora, quali sono le dimensioni dell’output?

output.ndim

FUORI:

0

L’output ha 0 dimensioni (è un valore scalare).

Perché?

Quando np.std calcola la deviazione standard, sta calcolando una statistica di riepilogo. In questo caso, la funzione sta prendendo un gran numero di valori e li comprime in una singola metrica.

Quindi l’input era 2-dimensionale, ma l’output è 0-dimensionale.

Cosa succede se vogliamo cambiarlo?

Cosa succede se vogliamo che l’output abbia tecnicamente 2 dimensioni?

Possiamo farlo con il parametro keepdims.

Mantenere le dimensioni originali quando usiamo np.std

Qui, imposteremokeepdims = True per rendere l’output le stesse dimensioni dell’input.

output_2d = np.std(array_2d, keepdims = True)

Ora, diamo un’occhiata all’output:

print(output_2d)

OUT:

]

Si noti che l’output, la deviazione standard, è ancora 5.00763306. Ma il risultato è racchiuso all’interno di doppie parentesi.

Ispezioniamooutput_2d e diamo un’occhiata più da vicino.

type(output_2d)

OUT:

numpy.ndarray

Quindi, output_2d è un array Numpy, non un valore scalare.

Controlliamo le dimensioni:

output_2d.ndim

OUT:

2

Questo array Numpy,output_2d, ha 2 dimensioni.

Questo è lo stesso numero di dimensioni dell’input.

Cosa è successo?

Quando abbiamo impostato keepdims = True, che ha causato il np.funzione std per produrre un output con lo stesso numero di dimensioni dell’input. Anche se non ci sono righe e colonne nell’output, l’output output_2d ha 2 dimensioni.

Quindi, nel caso in cui tu abbia bisogno che il tuo output abbia lo stesso numero di dimensioni del tuo input, puoi impostarekeepdims = True.

(Funziona anche quando si utilizza il parametroaxis try provalo!)

Domande frequenti sulla deviazione standard Numpy

Ora che hai imparato a conoscere la deviazione standard Numpy e visto alcuni esempi, esaminiamo alcune domande frequenti su np.std.

Domande frequenti:

  • Perché numpy std () dà un risultato diverso da matlab std () o da un altro linguaggio di programmazione?

Domanda 1: Perché numpy std () dà un risultato diverso da matlab std () o da un altro linguaggio di programmazione?

La semplice ragione è che matlab calcola lo dev standard secondo quanto segue:

\

(Molti altri strumenti usano la stessa equazione.)

Tuttavia, Numpy calcola con la seguente:

\

si Noti la sottile differenza tra il \frac{1}{n - 1} vs \frac{1}{N}.

Per risolvere questo problema, è possibile utilizzare il parametro ddof in Numpy.

Se si utilizza np.std con il parametroddof impostato suddof = 1, dovresti ottenere la stessa risposta di matlab.

Lascia le tue altre domande nei commenti qui sotto

Hai altre domande sulla funzione di deviazione standard Numpy?

Lascia la tua domanda nella sezione commenti qui sotto.

Unisciti al nostro corso per saperne di più su Numpy

Gli esempi che hai visto in questo tutorial dovrebbero essere sufficienti per iniziare, ma se sei serio sull’apprendimento di Numpy, dovresti iscriverti al nostro corso premium chiamato Numpy Mastery.

C’è molto di più da imparare su Numpy e Numpy Mastery ti insegnerà tutto, incluso:

  • Come creare array Numpy
  • Come utilizzare le funzioni casuali Numpy
  • Cosa fa la funzione “Numpy random seed”
  • Come rimodellare, dividere e combinare i tuoi array Numpy
  • e altro ancora

Inoltre, ti aiuterà a padroneggiare completamente la sintassi in poche settimane. Scoprirete come diventare “fluente” nella scrittura di codice Numpy.

Scopri di più qui:

Scopri di più su Numpy Mastery