Libreria dati NumPy

NumPy — una libreria open source per il linguaggio di programmazione Python, che implementa un gran numero di operazioni per lavorare con vettori, matrici e array. 

Gli algoritmi matematici implementati nei linguaggi interpretati (es. Python) sono spesso molto più lenti di quelli implementati nei linguaggi compilati (es. Fortran, C, Java). La libreria NumPy fornisce implementazioni di algoritmi computazionali (sotto forma di funzioni e operatori) ottimizzati per lavorare con array multidimensionali. 
Di conseguenza, qualsiasi algoritmo che può essere espresso come una sequenza di operazioni su array (matrici) e implementato utilizzando NumPy è abbastanza veloce.

NumPy (Numeric Python) è una libreria matematica di base per lavorare con i dati. Questa libreria è alla base di altre librerie per l'utilizzo di attività di machine learning o analisi dei dati (ad esempio, Pandas (utilizzo di dati tabulari), SciPy (metodi di ottimizzazione e calcoli scientifici), < tt>Matplotlib (tracciatura)).

 

Lavorare con NumPy

Per iniziare a lavorare con la libreria numpy, devi importarla all'inizio del programma come qualsiasi altra libreria, import numpy o giù di lì (che è usato più spesso) importa numpy come np



Vettori NumPy

Un vettore (o array) in NumPy è un insieme ordinato di dati omogenei.

È possibile accedere a un elemento di un vettore tramite il suo indice, proprio come avviene nelle liste. Ogni elemento del vettore ha il suo posto specifico, che viene impostato durante la creazione.
Tutti gli elementi vettoriali hanno lo stesso tipo di dati (int, str, bool, ecc.).

Creazione di un vettore
Per creare un vettore, devi utilizzare il costruttore numpy.array (un oggetto iterabile).
Le parentesi indicano qualsiasi oggetto iterabile: tuple, list, range(), ecc.
 
Esempio 
importa numpy come np importa numpy come np print(np.array((1,2,3,4,5))) # vettore dalla tupla print(np.array([1,2,3,4,5])) # vettore dalla lista print(np.array(range(5))) # vettore dal generatore

Lavorare con elementi vettoriali

Lavorare con elementi vettoriali è lo stesso che con elementi elenco, puoi accedere agli elementi tramite il loro indice e anche creare sezioni.

Esempio
1
2
3
4
5
6
7
importa numpy come np V = np.array((1,2,3,4)) stampa(V[0]) # 1 stampa(V[-1]) # 4 stampa(V[1:-2]) # [2] print(V[::2]) # [1 3]

Selezione di elementi vettoriali
Per selezionare elementi vettoriali, puoi utilizzare un vettore contenente valori logici (espressioni). Verranno selezionati gli elementi del vettore che saranno True nel vettore con valori booleani.
 

Esempio
importa numpy come np V = np.array([1,-2,3,-4,5]) # seleziona i primi due elementi del vettore print(V[np.array((Vero, Vero, Falso, Falso, Falso))]) # [ 1 -2] # seleziona elementi vettoriali positivi print(V[V > 0]) # [1 3 5] # seleziona anche elementi vettoriali print(V[V % 2 == 0]) # [-2 -4]

Modi per creare array e matrici

Altri modi utili per creare array e matrici.

Esempio
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
undici
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
trenta
31
32
33
34
35
36
37
importa numpy come np # Matrice unidimensionale di zeri print(np.zero(5)) #[0. 0.0.0.0.] # Matrice bidimensionale di zeri print(np.zeros((2, 3))) # [[0. 0.0.] #[0. 0.0.]] # Serie 3D di unità print(np.ones((2,3,4))) # [[[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]] # # [[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]]] # Array di zeri con indicazione del tipo print(np.zeros(5, dtype=np.int)) # [0 0 0 0 0] # Un array basato su un elenco di elenchi print(np.array([[1,2.0],[0,0],(1,3.)])) # [[1. 2.] #[0. 0.] # [1. 3.]] # Un array pieno di elementi di una progressione aritmetica che parte da 0 print(np.arange(10)) # [0 1 2 3 4 5 6 7 8 9] # Progressione aritmetica con indicazione del tipo print(np.arange(2, 10, dtype=np.float)) # [2. 3. 4. 5. 6. 7. 8. 9.] # Progressione aritmetica con differenza non intera print(np.arange(2, 3, 0.1)) # [2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9] # Progressione aritmetica con un dato numero di termini print(np.linspace(1., 4., 6)) # [1. 1.6 2.2 2.8 3.4 4. ]

Zero elementi dell'array
 
Funzione diverso da zero(V) 
Il risultato è una tupla di array. Ognuno di questi array corrisponde a un asse separato dell'array originale e contiene indici con elementi diversi da zero in questo array.
V - un NumPy array o oggetto simile ad un array.
Restituisce una python tupla (tuple) - tupla con array di indici di elementi diversi da zero dell'array V originale.
 
Funzione count_nonzero(V) 
Questa funzione si basa sul metodo integrato  __bool__() di oggetti Python che controlla se sono veri. Ne consegue che la funzione  count_nonzero() è effettivamente in grado di lavorare non solo con i numeri, ma anche con qualsiasi oggetto che può essere vero o falso.
V - un NumPy array o oggetto simile ad un array.
La funzione restituisce il numero di elementi dell'array diversi da zero lungo l'asse specificato.

Array diagonali

La  diag(V, k=0) funzione consente di estrarre una diagonale da un array, nonché di creare array diagonali da array unidimensionali.
V - Un oggetto simile a un array, array bidimensionali o unidimensionali, matrici, elenchi o tuple o qualsiasi funzione o oggetto con un metodo che restituisce un elenco o una tupla.
k - indice della diagonale (facoltativo).
Il valore predefinito è k = 0 che corrisponde alla diagonale principale. Un valore k positivo sposta la diagonale verso l'alto, un valore negativo verso il basso.

La funzione restituisce array NumPy (ndarray) - la diagonale dell'array specificata o una matrice diagonale dall'array unidimensionale specificato.

Array NumPy 2D

Si accede a un elemento di un array bidimensionale specificando le coordinate dell'elemento, prima il numero di riga, quindi il numero di colonna. Le coordinate sono separate da virgole. 
Qualsiasi array può essere convertito in un array bidimensionale usando la funzione reshape().

Esempio
1
2
3
4
5
6
7
8
# La funzione reshape() modifica la forma di un array senza modificarne i dati. x = np.arange(12).reshape(3, 4) stampa(x) # [[ 0 1 2 3] # [4 5 6 7] # [ 8 9 10 11]] # Per accedere a un elemento, specificare le sue coordinate separate da virgole print(x[1, 2]) # 6