NumPy 101: impara NumPy in 10 minuti
Numpy è una popolare libreria Python per il calcolo scientifico e l'analisi dei dati. Fornisce un potente oggetto array, insieme a molte utili funzioni e metodi per la manipolazione e l'elaborazione di dati numerici. In questo post del blog, condividerò alcune delle operazioni numpy essenziali che possono aiutarti a scrivere codice più veloce e più pulito. Che tu sia un principiante o un esperto, spero che troverai qualcosa di utile in questo cheat sheet intorpidito.
Installazione
Se non hai numpy, devi prima installarlo. Puoi installarlo in due giorni:
Usando il seme
pip install numpy
Innanzitutto, attiva il tuo ambiente anaconda e quindi utilizza il seguente comando:
conda install -c anaconda numpy
Prima di eseguire qualsiasi operazione utilizzando numpy, dobbiamo importarlo.
import numpy as np
Partiamo dalle basi e impariamo come creare valori scalari della classe numpy.
# int type
python_int = 2
numpy_int = np.int32(2)
print(type(python_int)) # ---> <class 'int'>
print(type(numpy_int)) # ---> <class 'numpy.int32'>
# float type
python_float = 2.5
numpy_float = np.float32(2.5)
print(type(python_float)) # ---> <class 'float'>
print(type(numpy_float)) # ---> <class 'numpy.float32'>
Ora è il momento di passare agli array o agli elenchi.
Array 1D
Creiamo ora un array 1-D usando array()il metodo di numpy.
# creating an 1-D array of int type
one_d_array_int = np.array([1,2,3])
print(one_d_array_int) # ---> output : [1 2 3]
# creating an 1-D array of float type
one_d_array_float = np.array([1.5,2.5,3.5])
print(one_d_array_float) # ---> output : [1.5 2.5 3.5]
Creiamo ora un array 2D usando array()il metodo di numpy.
# 2-D int array
two_d_array_int = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])
print(two_d_array_int) # ---> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 2-D float array
two_d_array_float= np.array([
[1.1,2.1,3.0],
[4.1,5.1,6.1],
[7.1,8.1,9.1]
])
print(two_d_array_float) # ---> [[1.1, 2.1, 3.0], [4.1, 5.1, 6.1], [7.1, 8.1, 9.1]]
Ora impariamo come si ottiene la dimensione di qualsiasi array.
# If the array is a 1-D array, then it'll return 1
print(one_d_array_int.ndim) # ---> output : 1
# If the array is a 2-D array, then it'l return 2
print(two_d_array_int.ndim) # ---> output : 2
print(one_d_array_int.shape) # ---> output : (3,)
print(two_d_array_int.shape) # ---> output : (3, 3)
Ottieni il tipo di dati di un array
print(one_d_array_int.dtype) # ---> output : dtype('int32')
Manipolazione degli elementi di un array
Creiamo un nuovo array e quindi eseguiremo operazioni su questo nuovo array.
a = np.array([[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]])
print(a) # ---> output : [[ 1 2 3 4 5 6 7]
# [ 8 9 10 11 12 13 14]]
Supponiamo di voler accedere al terzo elemento delle prime righe.
# accessing 1st row's 3rd element
print(a[0,2]) # ---> output : 3
Ricorda, numpy segue anche l'indicizzazione basata su 0 e per questo motivo se vogliamo ottenere la prima riga, dobbiamo scrivere 0 e non 1 e lo stesso vale per il valore della colonna se avessimo bisogno del terzo elemento, allora scriveremo 2 e non 3.
Accedi solo a una riga o colonna specifica
# accessing only the first row
print(a[0,:]) # ---> output : [1 2 3 4 5 6 7]
# accessing only the second column
print(a[:,1]) # ---> output : [2 9]
# [startindex:endindex:stepsize]
print(a[0, 1:-1:2]) # ---> output : [2 4 6]
Modifica del valore dell'elemento
a[0,2] = 99
print(a) # ---> output : [[ 1 2 99 4 5 6 7]
# [ 8 9 10 11 12 13 14]]
Matrici speciali in Numpy
Matrice Zero
# creating a zero matrix of shape(2,3)
print(np.zeros((2,3))) # ---> output : [[0. 0. 0.]
# [0. 0. 0.]
# [0. 0. 0.]]
Una Matrice
# All 1s matrix
print(np.ones((3,2,2))) # ---> output : [[[1. 1.]
# [1. 1.]]
#
# [[1. 1.]
# [1. 1.]]
#
# [[1. 1.]
# [1. 1.]]]
# creating ones matrix int type
print(np.ones((3,2,2)), dtype='int32') # ---> output : [[[1 1]
# [1 1]]
#
# [[1 1]
# [1 1]]
#
# [[1 1]
# [1 1]]]
Matrice casuale
Se vuoi avere un array con valori casuali di una forma specifica, puoi usare np.random.rand()method.
print(np.random.rand(3,3)) # ---> output : [[0.10671372 0.31133182 0.56572354]
# [0.34792672 0.88867917 0.25310353]
# [0.70052117 0.53243035 0.67948057]]
Se vuoi avere un array con valori int casuali di una forma specifica, puoi usare np.random.randint()method.
# np.random.randint(start_value,end_value,size)
print(np.random.randint(-1,5, size=(3,3))) # ---> output : [[0 -1 2]
# [4 2 1]
# [4 4 0]]
end_valueè esclusivo, ecco perché non c'è 5 nell'array di output.
Se non menzioni il start_value, il valore iniziale predefinito sarebbe 0. Devi menzionare il end_value.
Matrice identità
Se si desidera creare una matrice di identità, è possibile utilizzare np.identity()method.
print(np.identity(3)) # ---> output : [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
Array di trasposizione
a = np.random.randint(-1,5, size = (2,3)) # creating a random int array
print(a) # output : [[ 2 -1 1]
# [ 0 1 1]]
print(a.T) # output : [[ 2 0]
# [-1 1]
# [ 1 1]]
Se vuoi cambiare la forma dell'array puoi usare reshape()method.
a = np.random.randint(-1,5, size = (2,3)) # creating a random int array
print(a) # output : [[ 2 -1 1]
# [ 0 1 1]]
print(a.reshape(3,2)) # output : [[ 2 0]
# [-1 1]
# [ 1 1]]
print(a.reshape(1,6)) # output : [[1 2 3 2 2 2]]
Riempi con qualsiasi numero
Se vuoi che un aray sia riempito con un valore specifico, puoi usare np.full()method.
print(np.full((3,3), 14)) # ---> output : [[14 14 14]
# [14 14 14]
# [14 14 14]]
Se vuoi avere un array con un valore specifico e vuoi che abbia la stessa forma di un altro array, allora puoi usare np.full_like()method.
# Any other number (full_like)
print(np.full_like(a, 4)) # ---> output : [[4 4 4 4 4 4 4]
# [4 4 4 4 4 4 4]]
Copia matrice
a = [1,2,3] # created an array a
b = [10,20,30] # created an array b
print(a) # output : [1 2 3]
a = b # I'll explain it below
b[1] = 200 # changed b's 2nd element's value to 200
print(a) # output : [10 200 30] HOW??????
Qui, i valori di bnon sono stati copiati in a, invece ainiziano a indicare bche a sua volta cambia i valori di a ma il problema è che ogni volta che cambierai qualcosa nello bstesso si rifletterà su a.
Array di impilamento
Se vuoi impilare più array verticalmente o orizzontalmente, puoi usare rispettivamente vstack()method o hstack()method.
# Vertically stacking vectors
v1 = np.array([1,2,3,4]) # created array v1
v2 = np.array([5,6,7,8]) # create array v2
np.vstack([v1,v2,v1,v2]) # output : [[1 2 3 4]
# [5 6 7 8]
# [1 2 3 4]
# [5 6 7 8]]
print(np.hstack([v1,v2])) # output : [1 2 3 4 5 6 7 8]
a = np.array([1, 2, 3])
print(a.sum()) # sum of all values of a
print(a.max()) # max of all elements of a
print(a.mean()) # return mean of a
print(np.median(a)) # return median of a
print(np.std(a)) # return standard deviation of a
Questo conclude il nostro post sul blog cheat sheet intorpidito. Ci auguriamo che tu l'abbia trovato utile e che tu abbia imparato alcuni nuovi trucchi per lavorare con array e matrici in Python. Numpy è una libreria potente e versatile che può aiutarti a eseguire vari calcoli numerici e attività di analisi dei dati. Se vuoi saperne di più su numpy, puoi consultare la documentazione ufficiale o alcuni dei tutorial e corsi online disponibili. Grazie per aver letto e buona programmazione!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































