Estrazione righe e colonne da un array in Python

Posso estrarre righe e colonne di un array in Python combinando le sintassi di slicing e indexing.

Ad esempio, definisco un array a due dimensioni tramite la funzione array() del modulo Numpy.

>>> import numpy as np
>>> M= np.array([[1,2,3],[4,5,6],[7,8,9]])

Si tratta di una matrice 3x3 con tre righe e tre colonne

$$ M = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} $$

Nei prossimi esempi estraggo le righe e le colonne dalla matrice.

Estrazione prima riga

Per estrarre la prima riga dell'array digito M[0,:]

>>> M[0,:]
array([1, 2, 3])

Tra le parentesi quadre indico il numero di riga e di colonna separati da una virgola.

In questo caso il primo parametro è 0 ossia la prima riga,

Il secondo parametro è il simbolo : che vuol dire seleziona tutte le colonne.

Nota. In Python il primo elemento di un array ha indice uguale a zero. Il secondo elemento ha indice uguale a uno. E via dicendo.

Avrei potuto anche scrivere semplicemente M[0] omettendo il secondo parametro.

>>> M[0]
array([1, 2, 3])

Il risultato sarebbe stato lo stesso.

Estrazione seconda riga

Se voglio estrarre la seconda riga dell'array digito M[1,:]

>>> M[1,:]
array([4, 5, 6])

Oppure in alternativa

>>> M[1]
array([4, 5, 6])

Estrazione terza riga

Se voglio estrarre la terza riga dell'array digito M[2,:]

>>> M[2,:]
array([7, 8, 9])

Estrazione prima colonna

Per estrarre la prima colonna dell'array digito M[:,0]

>>> M[:,0]
array([1, 4, 7])

In questo caso indico al primo parametro il simbolo : per selezionare tutte le righe.

Al secondo parametri indico il numero 0 per selezionare la prima colonna.

Estrazione seconda colonna

Per estrarre la seconda colonna digito M[:,1]

>>> M[:,1]
array([2, 5, 8])

Estrazione terza colonna

Per estrarre la terza colonna digito M[:,2]

>>> M[:,2]
array([3, 6, 9])

In alternativa, essendo l'ultima colonna dell'array avrei potuto estrarla anche tramite la sua posizione relativa (-1) senza indicare la posizione assoluta (3)

Se digito M[:,-1] ottengo lo stesso risultato

>>> M[:,-1]
array([3, 6, 9])

In questo caso -1 significa "ultima riga" perché si trova al secondo parametro,

Quindi per estrarre la penultima riga basta indicare -2

>>> M[:,-2]
array([2, 5, 8])

Nota. Allo stesso modo se voglio estrarre l'ultima riga della matrice tramite la sua posizione relativa dovrei scrivere M[-1,:]. Per estrarre la penultima riga M[-2,:]

Estrazione sottomatrice

Se voglio selezionare una sottomatrice devo indicare gli intervalli di righe e colonne da selezionare

Ad esempio, per selezionare le prime due righe e due colonne della matrice digito M[0:2,0:2]

>> M[0:2,0:2]
array([[1, 2],
[4, 5]])

Per selezionare la seconda e terza riga e la seconda e terza colonna della matrice digito M[1:3,1:3]

>>> M[1:3,1:3]
array([[5, 6],
[8, 9]])

Infine, se voglio selezionare due righe/colonne non contigue, devo indicare l'indice delle righe da selezionare tra parentesi quadre

Ad esempio, per selezionare la prima e la terza riga della matrice digito M[[0,2],:]

>> M[[0,2],:]
array([[1, 2, 3],
[7, 8, 9]])

Nel primo parametro indico le righe da selezionare [0,2] ossia la prima (0) e la terza (2)

Nel secondo parametro indico il simbolo : per selezionare tutte le colonne della matrice.

Posso anche selezionare le righe con passo alterno digitando M[::2,;]

>> M[::2,:]
array([[1, 2, 3],
[7, 8, 9]])

In questo caso il primo parametro è ::2 ossia 0::2.

Vuol dire che la selezione parte dalla prima riga (0:) e seleziona tutte le righe(:) con step 2.

Per questa ragione, seleziona la prima e la terza riga.

Attenzione. In tutti questi esempi ho creato delle viste (view) dell'array originale. Per creare una copia vera e propria del subarray() va aggiunto l'attributo copy(). Ad esempio, B=M[::2,:].copy() Per ogni ulteriore spiegazione rimando ai miei appunti sulla differenza tra vista e copia di un array.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Array con Numpy (Python)

Alcune funzioni utili