HOWTO · NumPy
Come invertire un array NumPy in Python
Esistono tre metodi principali che possono essere utilizzati per invertire un array NumPy in Python, il metodo Basic Slicing, la funzione numpy.flipud() e la funzione numpy.flip().
In questa pagina
Per invertire un array NumPy in Python, puoi usare lo slicing di base con [::-1], numpy.flipud() oppure numpy.flip(). Lo slicing offre una forma concisa per invertire un array unidimensionale e restituisce una vista. numpy.flipud() inverte le righe lungo l’asse 0, mentre numpy.flip() permette di invertire un asse specifico o tutti gli assi. Gli esempi seguenti mostrano le differenze tra i risultati.
Invertire un array NumPy con lo slicing di base in Python
Per un array unidimensionale, array[::-1] seleziona gli elementi dall’ultimo al primo con passo -1. Esegui questo esempio:
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])
reverse = array[::-1]
print(reverse)
[5 4 3 2 1]
La porzione selezionata è una vista che fa riferimento agli stessi dati di array: non crea una copia indipendente. Di conseguenza, assegnando un valore tramite reverse si modifica anche l’elemento corrispondente in array. Se vuoi mantenere indipendenti i valori originali, crea una copia con array[::-1].copy(). Questo approccio è utile quando vuoi invertire un array unidimensionale in modo conciso e la semantica della vista è accettabile. Per un array multidimensionale, la stessa espressione inverte soltanto il primo asse; se devi specificare quale dimensione modificare, usa una funzione che consenta di indicare l’asse.
Invertire un array NumPy con la funzione numpy.flipud() in Python
numpy.flipud() inverte un array lungo l’asse 0. Per un array unidimensionale, l’asse 0 è l’unico asse, quindi i valori appaiono in ordine inverso. In un array bidimensionale, l’asse 0 corrisponde alla direzione delle righe: cambia l’ordine delle righe, ma i valori all’interno di ciascuna riga mantengono il proprio ordine. La documentazione NumPy di numpy.flipud() descrive questa funzione.
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]])
print(np.flipud(array))
[[3 4]
[1 2]]
Scegli numpy.flipud() quando vuoi invertire l’asse 0, soprattutto con le matrici, dove ciò significa invertire l’ordine delle righe. Con un array unidimensionale è un’alternativa leggibile allo slicing; per un altro asse, usa numpy.flip() e specifica quell’asse.
Invertire un array NumPy con la funzione numpy.flip() in Python
numpy.flip() inverte gli elementi lungo l’asse indicato. Con un array bidimensionale, axis=1 inverte le colonne all’interno di ogni riga. Se ometti axis, il valore predefinito è None e vengono invertiti tutti gli assi. Cambia quindi sia l’ordine delle righe sia l’ordine degli elementi in ciascuna riga; l’array non viene appiattito in un’unica sequenza. Consulta la documentazione NumPy di numpy.flip().
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]])
print(np.flip(array, axis=1))
print(np.flip(array))
[[2 1]
[4 3]]
[[4 3]
[2 1]]
Usa numpy.flip(array, axis=0) per invertire le righe, axis=1 per invertire le colonne di un array bidimensionale oppure ometti axis per invertire tutte le dimensioni. Per un array unidimensionale, omettere axis inverte il suo unico asse. In pratica, scegli lo slicing per una breve espressione su un array unidimensionale, numpy.flipud() quando ti serve specificamente l’asse 0 e numpy.flip() quando vuoi indicare un asse o invertire tutti gli assi. Queste operazioni modificano l’ordine degli elementi lungo le dimensioni; non ordinano i valori né rimodellano l’array.