HOWTO · NumPy

Elimina riga in NumPy

La funzione numpy.delete() può essere utilizzata per eliminare una riga da un array NumPy multidimensionale in Python.

In questa pagina

Gli array NumPy non dispongono di un’operazione per rimuovere righe modificandone la dimensione direttamente. Per creare un array senza alcune righe, usa numpy.delete() lungo l’asse delle righe oppure una maschera booleana per mantenere le righe che soddisfano una condizione. Gli indici degli array partono da 0, quindi l’indice 1 indica la seconda riga.

Elimina una riga in base all’indice con numpy.delete()

Passa a numpy.delete() l’array, l’indice della riga e axis=0. L’asse 0 seleziona le righe; in un array bidimensionale, l’asse 1 seleziona invece le colonne. Questo esempio rimuove la seconda riga:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
without_second = np.delete(array, 1, axis=0)
print(without_second)

L’array restituito contiene la prima e la terza riga. numpy.delete() crea un nuovo array e lascia invariato array. Usa il valore restituito nei calcoli successivi; assegnarlo a una nuova variabile, come nell’esempio, ti permette di conservare l’array originale.

Elimina più righe in base all’indice

Per rimuovere più righe note con una sola chiamata, passa i relativi indici come sequenza. Gli indici continuano a riferirsi all’array originale: rimuovere l’indice 1 non modifica il significato dell’indice 3 nella stessa chiamata. In questo esempio vengono selezionate per la rimozione la seconda e la quarta riga:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9],
                  [10, 11, 12]])
without_selected = np.delete(array, [1, 3], axis=0)
print(without_selected)

Le righe rimanenti sono quelle originali agli indici 0 e 2. Se le righe da rimuovere dipendono dai valori dei dati, spesso è più chiaro usare una maschera booleana anziché raccoglierne prima gli indici.

Elimina le righe che soddisfano una condizione

Una maschera booleana può selezionare le righe da mantenere. In un array bidimensionale, array[:, 0] seleziona la prima colonna; confrontarla con 5 produce un valore booleano per ogni riga. L’esempio seguente mantiene le righe il cui valore nella prima colonna è maggiore di 5:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9],
                  [10, 11, 12]])
keep = array[:, 0] > 5
filtered = array[keep]
print(filtered)

Questo approccio filtra i dati mantenendo le righe che soddisfano la condizione, anziché eliminarle con numpy.delete(). Per rimuovere le righe che soddisfano una condizione, inverti la maschera con ~, come in array[~keep]. Scegli un confronto adatto alla colonna e alla regola dei tuoi dati.

Comprendi assi, indici e array restituito

In un array bidimensionale, axis=0 indica le righe e axis=1 le colonne. In numpy.delete(array, index, axis=0), index è una posizione a base zero lungo l’asse delle righe: 0 è la prima riga, 1 la seconda e così via. Se ometti axis, l’array viene appiattito prima della rimozione, quindi non viene rimossa una riga intera da un array bidimensionale.

L’operazione restituisce un nuovo array invece di ridimensionare quello di input. Conserva il risultato assegnandolo a una variabile oppure usalo direttamente in un’espressione successiva. Un indice esterno all’asse selezionato è fuori intervallo e NumPy segnala un IndexError. Se non sai quali righe seleziona una condizione, controlla la maschera booleana o stampa le righe selezionate prima di usare il risultato in un calcolo più ampio.