TUTORIAL

Tutorial Numpy - NumPy Array Append

Questa sezione introduce come aggiungere dati all'array Numpy.

In questa pagina

NumPy mette a disposizione numpy.append per aggiungere valori a un array. È una funzione, non un metodo ndarray.append, e restituisce un nuovo array senza modificare direttamente quello in ingresso. Le liste Python hanno metodi con nomi simili: list.append aggiunge un oggetto come singolo elemento, mentre list.extend aggiunge ogni elemento di un iterabile. La funzione NumPy segue invece le regole di forma e di asse degli array: i metodi delle liste sono utili come termine di paragone, ma non sono chiamate intercambiabili.

Cosa fa numpy.append

numpy.append combina un array in ingresso con dei valori e restituisce il risultato. Per impostazione predefinita appiattisce prima entrambi gli input, quindi il risultato è monodimensionale anche se gli array originali avevano più dimensioni. Specificando un asse, mantiene le altre dimensioni e unisce i dati lungo la direzione indicata. Scegli il comportamento predefinito per ottenere una sequenza piatta; specifica un asse se è importante mantenere la disposizione di righe e colonne.

Poiché la funzione restituisce un nuovo array, conserva il valore restituito se ti serve il risultato combinato. Per esempio, assegnalo a una nuova variabile oppure riassegna la variabile originale. Se chiami la funzione senza usare il valore restituito, arr non viene aggiornato.

Sintassi e parametri

La firma è numpy.append(arr, values, axis=None) (di solito chiamata come np.append dopo aver importato NumPy con il nome np). arr è l’input simile a un array da estendere. values contiene i dati da aggiungere e può essere uno scalare oppure un oggetto simile a un array. axis seleziona la dimensione lungo cui unire i dati; per impostazione predefinita vale None, che appiattisce entrambi gli input prima dell’unione. La funzione restituisce un array.

Parametro Significato
arr L’oggetto in ingresso simile a un array.
values I valori scalari o simili a un array da aggiungere.
axis La dimensione lungo cui unire i dati, oppure None per appiattirli prima.

Esegui questo esempio:

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

import numpy as np

numbers = np.array([1, 2, 3])
combined = np.append(numbers, [4, 5])
print(combined)
[1 2 3 4 5]

Aggiungere valori senza specificare un asse

Quando axis viene omesso o impostato su None, NumPy appiattisce arr e values prima di unirli. Il risultato è monodimensionale, indipendentemente dalle dimensioni originali degli input. Per esempio, un array bidimensionale può essere combinato con una riga di valori senza mantenere la disposizione in righe e colonne. Questo comportamento è comodo per creare una sequenza piatta, ma non inserisce una riga o una colonna nella struttura originale.

Se è importante mantenere le dimensioni dell’array, specifica un asse invece di affidarti al comportamento predefinito. L’appiattimento può rendere compatibili input con forme diverse, perché le loro dimensioni vengono eliminate prima di combinare i valori.

Aggiungere valori lungo un asse

Con un array bidimensionale, axis=0 aggiunge righe e axis=1 aggiunge colonne. Le forme degli input devono coincidere in tutte le dimensioni tranne quella lungo cui avviene l’unione. Quindi, per aggiungere una riga, il numero di colonne deve corrispondere a quello dell’array esistente; per aggiungere una colonna, deve corrispondere il numero di righe. Se le forme non sono compatibili, viene sollevato ValueError, perché gli array non possono essere uniti mantenendo allineate le altre dimensioni.

Questo esempio aggiunge una riga:

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

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
with_row = np.append(matrix, [[5, 6]], axis=0)
print(with_row)
[[1 2]
 [3 4]
 [5 6]]

Tutte le dimensioni, tranne quella indicata da axis, devono coincidere. Per esempio, aggiungere una riga con tre colonne a una matrice con due colonne non è compatibile e solleva ValueError:

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
try:
    np.append(matrix, [[5, 6, 7]], axis=0)
except ValueError as error:
    print(type(error).__name__)

Per aggiungere invece una colonna, passa un array bidimensionale con una riga per ogni riga esistente e una colonna di nuovi valori. Esegui questo esempio:

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
with_column = np.append(matrix, [[5], [6]], axis=1)
print(with_column)
[[1 2 5]
 [3 4 6]]

Il risultato ha le stesse due righe di matrix, con i nuovi valori in una terza colonna. Se l’input da aggiungere ha un numero di righe errato, controlla le dimensioni prima di riprovare.