Python - Matrix

Matrix è un caso speciale di array bidimensionale in cui ogni elemento di dati è della stessa dimensione. Quindi ogni matrice è anche una matrice bidimensionale ma non viceversa. Le matrici sono strutture di dati molto importanti per molti calcoli matematici e scientifici. Poiché abbiamo già discusso la struttura dei dati di due array dimensionali nel capitolo precedente, ci concentreremo sulle operazioni della struttura dei dati specifiche per le matrici in questo capitolo.

Useremo anche il pacchetto numpy per la manipolazione dei dati della matrice.

Esempio di matrice

Si consideri il caso di registrazione della temperatura per 1 settimana misurata al mattino, a metà giornata, alla sera e a metà notte. Può essere presentato come una matrice 7X5 utilizzando un array e il metodo reshape disponibile in numpy.

from numpy import * 
a = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = reshape(a,(7,5))
print(m)

I dati di cui sopra possono essere rappresentati come una matrice bidimensionale come di seguito.

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Accesso ai valori in una matrice

È possibile accedere agli elementi di dati in una matrice utilizzando gli indici. Le modalità di accesso sono le stesse del modo in cui si accede ai dati nell'array bidimensionale.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
# Print data for Wednesday
print(m[2])

# Print data for friday evening
print(m[4][3])

Quando il codice sopra viene eseguito, produce il seguente risultato:

['Wed', 15, 21, 20, 19]
23

Aggiunta di una riga

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_r = append(m,[['Avg',12,15,13,11]],0)

print(m_r)

Quando il codice sopra viene eseguito, produce il seguente risultato:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']
 ['Avg' '12' '15' '13' '11']]

Aggiunta di una colonna

Possiamo aggiungere una colonna a una matrice usando il metodo insert (). qui dobbiamo menzionare l'indice in cui vogliamo aggiungere la colonna e un array contenente i nuovi valori delle colonne aggiunte. Nell'esempio seguente aggiungiamo una nuova colonna alla quinta posizione dall'inizio.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_c = insert(m,[5],[[1],[2],[3],[4],[5],[6],[7]],1)

print(m_c)

Quando il codice sopra viene eseguito, produce il seguente risultato:

[['Mon' '18' '20' '22' '17' '1']
 ['Tue' '11' '18' '21' '18' '2']
 ['Wed' '15' '21' '20' '19' '3']
 ['Thu' '11' '20' '22' '21' '4']
 ['Fri' '18' '17' '23' '22' '5']
 ['Sat' '12' '22' '20' '18' '6']
 ['Sun' '13' '15' '19' '16' '7']]

Elimina una riga da una matrice

Possiamo eliminare una riga da una matrice utilizzando il metodo delete (). Dobbiamo specificare l'indice della riga e anche il valore dell'asse che è 0 per una riga e 1 per una colonna.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,[2],0)

print(m)

Quando il codice sopra viene eseguito, produce il seguente risultato:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Elimina una colonna da una matrice

Possiamo eliminare una colonna da una matrice usando il metodo delete (). Dobbiamo specificare l'indice della colonna e anche il valore dell'asse che è 0 per una riga e 1 per una colonna.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,s_[2],1)

print(m)

Quando il codice sopra viene eseguito, produce il seguente risultato:

[['Mon' '18' '22' '17']
 ['Tue' '11' '21' '18']
 ['Wed' '15' '20' '19']
 ['Thu' '11' '22' '21']
 ['Fri' '18' '23' '22']
 ['Sat' '12' '20' '18']
 ['Sun' '13' '19' '16']]

Aggiorna una riga in una matrice

Per aggiornare i valori nella riga di una matrice, riassegniamo semplicemente i valori all'indice della riga. Nell'esempio seguente tutti i valori per i dati di giovedì sono contrassegnati come zero. L'indice per questa riga è 3.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m[3] = ['Thu',0,0,0,0]

print(m)

Quando il codice sopra viene eseguito, produce il seguente risultato:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '0' '0' '0' '0']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]