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
|
|