HOWTO · NumPy

Aggiungi riga a Matrix in NumPy

Questo tutorial mostra come aggiungere una riga a una matrice in numpy.

In questa pagina

Una matrice NumPy è un array bidimensionale. Per aggiungere una riga, fornisci un valore per ogni colonna e unisci la riga lungo l’asse 0. Usa numpy.vstack() per impilare direttamente gli array in verticale; scegli numpy.append() o numpy.concatenate() quando il loro modo di combinare gli array si adatta meglio al tuo codice. Queste operazioni restituiscono un nuovo array: assegna il risultato se vuoi conservarlo.

Gli esempi usano una matrice con tre colonne e aggiungono [7, 8, 9]. Ogni esempio stampa l’array risultante, così puoi vedere la riga aggiunta.

Aggiungere una riga con numpy.vstack()

numpy.vstack() impila gli array in verticale. Accetta la nuova riga come array monodimensionale e restituisce un nuovo array con la riga aggiunta in fondo.

Esegui questo esempio:

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])
new_row = np.array([7, 8, 9])

result = np.vstack((matrix, new_row))
print(result)

La matrix originale resta invariata; result contiene la riga aggiunta. La nuova riga deve avere tre valori, per corrispondere al numero di colonne della matrice. Per aggiungere più righe, passa a numpy.vstack() un array bidimensionale che le contenga.

Aggiungere una riga con numpy.append()

Con numpy.append(), imposta axis=0 per aggiungere elementi lungo la dimensione delle righe. In questo esempio, la nuova riga è bidimensionale e ha forma (1, 3), compatibile con le due dimensioni della matrice e le sue tre colonne.

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])
new_row = np.array([[7, 8, 9]])

result = np.append(matrix, new_row, axis=0)
print(result)

numpy.append() restituisce un nuovo array e non modifica matrix sul posto. Per usare l’array con la riga aggiunta, assegna il valore restituito, come nell’esempio. Con axis=0, gli array devono avere lo stesso numero di colonne; puoi aggiungere anche più righe, purché siano fornite con una forma bidimensionale compatibile. Se devi aggiungere righe ripetutamente a un array di grandi dimensioni, valuta di raccoglierle e unirle tutte in una volta, perché ogni chiamata ad append crea un array risultante.

Combinare righe con numpy.concatenate() e numpy.r_

numpy.concatenate() unisce array lungo un asse esistente. Imposta axis=0 per aggiungere righe e verifica che ogni input abbia lo stesso numero di colonne. È un’operazione generale per combinare array, quindi funziona anche con più di due array compatibili.

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])
new_row = np.array([[7, 8, 9]])

result = np.concatenate((matrix, new_row), axis=0)
print(result)

numpy.r_ è un oggetto speciale per l’indicizzazione, non una chiamata di funzione. In questo caso offre un modo conciso per combinare righe:

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])
new_row = np.array([[7, 8, 9]])

result = np.r_[matrix, new_row]
print(result)

Scegli numpy.vstack() quando l’impilamento verticale esprime più chiaramente l’intento; scegli numpy.concatenate() se vuoi indicare esplicitamente l’asse o combinare una sequenza di array. numpy.r_ è un’alternativa compatta per concatenazioni semplici.

Inserire una riga in una posizione specifica con numpy.insert()

Usa numpy.insert() quando vuoi collocare la nuova riga tra righe esistenti. Il suo argomento obj indica la posizione: l’indice 1 inserisce la riga prima dell’attuale seconda riga. Imposta axis=0 affinché NumPy inserisca la riga lungo la dimensione delle righe.

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])
new_row = [7, 8, 9]

result = np.insert(matrix, 1, new_row, axis=0)
print(result)

Per inserire una riga dopo l’ultima, usa come posizione il numero attuale di righe. Per un array bidimensionale, .shape è un attributo il cui primo valore indica il numero di righe:

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])
new_row = [7, 8, 9]

position = matrix.shape[0]
result = np.insert(matrix, position, new_row, axis=0)
print(result)

Come gli altri metodi, numpy.insert() restituisce un nuovo array. Conserva il risultato oppure assegnalo di nuovo a matrix: l’array originale non viene modificato. Con tutti e quattro i metodi, la riga aggiunta deve avere lo stesso numero di colonne delle righe esistenti.