Scienza dei dati

Tutorial di Python NumPy

Tutorial di Python NumPy
In questa lezione sulla libreria Python NumPy, vedremo come questa libreria ci permette di gestire potenti oggetti array N-dimensionali con funzioni sofisticate presenti per manipolare e operare su questi array. Per completare questa lezione, tratteremo le seguenti sezioni:

Cos'è il pacchetto Python NumPy??

In poche parole, NumPy sta per 'Numerical Python' e questo è ciò che si propone di realizzare, per consentire operazioni numeriche complesse eseguite su oggetti array N-dimensionali molto facilmente e in modo intuitivo. È la libreria principale utilizzata in calcolo scientifico, con funzioni presenti per eseguire operazioni algebriche lineari e operazioni statistiche.

Uno dei concetti più fondamentali (e attraenti) per NumPy è il suo utilizzo di oggetti array N-dimensionali. Possiamo prendere questo array come solo un raccolta di righe e colonne, proprio come un file MS-Excel. È possibile convertire un elenco Python in un array NumPy e utilizzare le funzioni su di esso.

Rappresentazione dell'array NumPy

Solo una nota prima di iniziare, usiamo un ambiente virtuale per questa lezione che abbiamo creato con il seguente comando:

python -m virtualenv numpy
sorgente numpy/bin/activate

Una volta che l'ambiente virtuale è attivo, possiamo installare la libreria numpy all'interno dell'ambiente virtuale in modo che gli esempi che creeremo in seguito possano essere eseguiti:

pip install numpy

Vediamo qualcosa di simile quando eseguiamo il comando precedente:

Verifichiamo rapidamente se il pacchetto NumPy è stato installato correttamente con il seguente frammento di codice breve:

importa numpy come np
a = np.matrice([1,2,3])
stampa(a)

Una volta eseguito il programma sopra, dovresti vedere il seguente output:

Possiamo anche avere array multidimensionali con NumPy:

multi_dimension = np.matrice([(1, 2, 3), (4, 5, 6)])
print(multi_dimensione)

Questo produrrà un output come:

[[1 2 3]
[4 5 6]]

Puoi usare anche Anaconda per eseguire questi esempi che è più semplice ed è quello che abbiamo usato sopra. Se vuoi installarlo sul tuo computer, guarda la lezione che descrive “Come installare Anaconda Python su Ubuntu 18.04 LTS” e condividi il tuo feedback. Ora passiamo ai vari tipi di operazioni che possono essere eseguite con gli array Python NumPy.

Utilizzo di array NumPy su elenchi Python

È importante chiedere che quando Python ha già una struttura dati sofisticata per contenere più elementi del motivo per cui abbiamo bisogno degli array NumPy? Gli array NumPy sono preferito rispetto alle liste Python per i seguenti motivi:

Lasciateci dimostrare che gli array NumPy occupano meno memoria. Questo può essere fatto scrivendo un programma Python molto semplice:

importa numpy come np
tempo di importazione
sistema di importazione
python_list = range(500)
print(sistema.getsizeof(1) * len(python_list))
numpy_arr = np.arange(500)
print(numpy_arr.taglia * numpy_arr.dimensione articolo)

Quando eseguiamo il programma sopra, otterremo il seguente output:

14000
4000

Questo mostra che la stessa lista di dimensioni è più di 3 volte di dimensioni rispetto all'array NumPy della stessa dimensione.

Esecuzione di operazioni NumPy

In questa sezione, esaminiamo rapidamente le operazioni che possono essere eseguite sugli array NumPy.

Trovare le dimensioni nell'array

Poiché l'array NumPy può essere utilizzato in qualsiasi spazio dimensionale per contenere i dati, possiamo trovare la dimensione di un array con il seguente frammento di codice:

importa numpy come np
numpy_arr = np.matrice([(1,2,3),(4,5,6)])
print(numpy_arr.ndm)

Vedremo l'output come "2" poiché si tratta di un array bidimensionale.

Trovare il tipo di dati degli elementi nell'array

Possiamo usare l'array NumPy per contenere qualsiasi tipo di dati. Scopriamo ora il tipo di dati dei dati contenuti in un array:

altro_arr = np.array([('awe', 'b', 'cat')])
print(other_arr.dtype)
numpy_arr = np.matrice([(1,2,3),(4,5,6)])
print(numpy_arr.dtype)

Abbiamo usato diversi tipi di elementi nello snippet di codice sopra. Ecco l'output che questo script mostrerà:

int64

Questo accade quando i caratteri vengono interpretati come caratteri unicode e il secondo è ovvio.

Rimodellare gli elementi di un array

Se un array NumPy è composto da 2 righe e 4 colonne, può essere rimodellato per contenere 4 righe e 2 colonne. Scriviamo un semplice frammento di codice per lo stesso:

originale = np.array([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])
stampa (originale)
rimodellato = originale.rimodellare(4, 2)
stampa (rimodellata)

Una volta eseguito il frammento di codice sopra, otterremo il seguente output con entrambi gli array stampati sullo schermo:

[['1' 'b' 'c' '4']
['5' 'f' 'g' '8']]
[['1' 'b']
['c' '4']
['5' 'f']
['g' '8']]

Nota come NumPy si è occupato di spostare e associare gli elementi a nuove righe.

Operazioni matematiche sugli elementi di un array

L'esecuzione di operazioni matematiche sugli elementi di un array è molto semplice. Inizieremo scrivendo un semplice frammento di codice per scoprire il massimo, il minimo e l'aggiunta di tutti gli elementi dell'array. Ecco il frammento di codice:

numpy_arr = np.matrice([(1, 2, 3, 4, 5)])
print(numpy_arr.massimo())
print(numpy_arr.min())
print(numpy_arr.somma())
print(numpy_arr.significare())
print(np.sqrt(numpy_arr))
print(np.std(numpy_arr))

Nelle ultime 2 operazioni sopra, abbiamo anche calcolato la radice quadrata e la deviazione standard di ciascun elemento dell'array. Il frammento di cui sopra fornirà il seguente output:

5
1
15
3.0
[[1.   1.41421356   1.73205081   2.   2.23606798]]
1.4142135623730951

Conversione di elenchi Python in array NumPy

Anche se hai utilizzato elenchi Python nei tuoi programmi esistenti e non vuoi modificare tutto quel codice ma vuoi comunque utilizzare gli array NumPy nel tuo nuovo codice, è bene sapere che possiamo facilmente convertire un Python list in un array NumPy. Ecco un esempio:

# Crea 2 nuove liste altezza e peso
altezza = [2.37,  2.87, 1.52, 1.51, 1.70, 2.05]
peso = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Crea 2 array numpy da altezza e peso
np_altezza = np.matrice (altezza)
np_weight = np.matrice (peso)

Giusto per verificare, ora possiamo stampare il tipo di una delle variabili:

print(type(np_height))

E questo mostrerà:

Ora possiamo eseguire operazioni matematiche su tutti gli elementi contemporaneamente. Vediamo come possiamo calcolare il BMI delle persone:

# Calcola bmi
bmi = np_weight / np_height ** 2
# Stampa il risultato
stampa (bmi)

Questo mostrerà il BMI di tutte le persone calcolato per elemento:

[16.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]

Non è così facile e utile?? Possiamo anche filtrare facilmente i dati con una condizione al posto di un indice tra parentesi quadre:

bmi[bmi > 25]

Questo darà:

matrice([29.54033934, 39.02460418, 29.8200692 ])

Crea sequenze e ripetizioni casuali con NumPy

Con molte funzionalità presenti in NumPy per creare dati casuali e organizzarli in una forma richiesta, gli array NumPy vengono utilizzati molte volte nella generazione di set di dati di test in molti luoghi, inclusi gli scopi di debug e test. Ad esempio, se vuoi creare un array da 0 a n, possiamo usare arange (nota la singola 'r') come il frammento dato:

print(np.arancione(5))

Questo restituirà l'output come:

[0 1 2 3 4]

La stessa funzione può essere utilizzata per fornire un valore inferiore in modo che l'array inizi da numeri diversi da 0:

print(np.arange(4, 12))

Questo restituirà l'output come:

[ 4  5  6  7  8  9 10 11]

I numeri non devono essere continui, possono saltare un passaggio fisso come:

print(np.arange(4, 14, 2))

Questo restituirà l'output come:

[ 4 6 8 10 12]

Possiamo anche ottenere i numeri in ordine decrescente con un valore di salto negativo:

print(np.arange(14, 4, -1))

Questo restituirà l'output come:

[14 13 12 11 10 9 8 7 6 5]

È possibile finanziare n numeri tra x e y con spazio uguale con il metodo linspace, ecco il frammento di codice per lo stesso:

np.linspace(start=10, stop=70, num=10, dtype=int)

Questo restituirà l'output come:

matrice([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])

Si prega di notare che gli elementi in uscita non sono equidistanti. NumPy fa del suo meglio per farlo, ma non è necessario fare affidamento su di esso poiché esegue l'arrotondamento.

Infine, diamo un'occhiata a come possiamo generare un insieme di sequenze casuali con NumPy che è una delle funzioni più utilizzate a scopo di test. Passeremo un intervallo di numeri a NumPy che verrà utilizzato come punto iniziale e finale per i numeri casuali:

print(np.casuale.randint(0, 10, dimensione=[2,2]))

Il frammento di cui sopra crea un array NumPy dimensionale 2 per 2 che conterrà numeri casuali tra 0 e 10. Ecco l'output di esempio:

[[0 4]
[8 3]]

Si prega di notare che poiché i numeri sono casuali, l'output può differire anche tra le 2 esecuzioni sulla stessa macchina.

Conclusione

In questa lezione, abbiamo esaminato vari aspetti di questa libreria di calcolo che possiamo usare con Python per calcolare problemi matematici semplici e complessi che possono sorgere in vari casi d'uso. Il NumPy è una delle librerie di calcolo più importanti quando si tratta di ingegneria dei dati e calcolo di dati numerici, sicuramente un'abilità che dobbiamo avere alle nostre spalle.

Per favore condividi il tuo feedback sulla lezione su Twitter con @sbmaggarwal e @LinuxHint.

Il tasto sinistro del mouse non funziona su Windows 10
Se stai utilizzando un mouse dedicato con il tuo laptop o computer desktop ma il il tasto sinistro del mouse non funziona su Windows 10/8/7 per qualch...
Il cursore salta o si sposta in modo casuale durante la digitazione in Windows 10
Se scopri che il cursore del mouse salta o si sposta da solo, automaticamente, in modo casuale durante la digitazione nel laptop o nel computer Window...
Come invertire la direzione di scorrimento del mouse e dei touchpad in Windows 10
Topo e Touchpads non solo rende l'elaborazione semplice, ma anche più efficiente e richiede meno tempo. Non possiamo immaginare una vita senza questi ...