Rimodellamento dell'array NumPy
Rimodellare gli array
Rimodellare significa cambiare la forma di un array.
La forma di una matrice è il numero di elementi in ciascuna dimensione.
Risagomando possiamo aggiungere o rimuovere dimensioni o modificare il numero di elementi in ciascuna dimensione.
Risagoma da 1D a 2D
Esempio
Converti la seguente matrice 1D con 12 elementi in una matrice 2D.
La dimensione più esterna avrà 4 array, ciascuno con 3 elementi:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(4, 3)
print(newarr)
Risagoma da 1D a 3D
Esempio
Converti la seguente matrice 1D con 12 elementi in una matrice 3D.
La dimensione più esterna avrà 2 array che contengono 3 array, ciascuno con 2 elementi:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
Possiamo rimodellare in qualsiasi forma?
Sì, purché gli elementi richiesti per il rimodellamento siano uguali in entrambe le forme.
Possiamo rimodellare un array 1D di 8 elementi in 4 elementi in un array 2D di 2 righe, ma non possiamo rimodellarlo in un array 2D di 3 elementi e 3 righe in quanto ciò richiederebbe 3x3 = 9 elementi.
Esempio
Prova a convertire un array 1D con 8 elementi in un array 2D con 3 elementi in ciascuna dimensione (solleverà un errore):
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)
Resi Copia o Visualizza?
Esempio
Controlla se l'array restituito è una copia o una vista:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)
L'esempio sopra restituisce l'array originale, quindi è una vista.
Dimensione sconosciuta
Puoi avere una dimensione "sconosciuta".
Ciò significa che non è necessario specificare un numero esatto per una delle dimensioni nel metodo di risagoma.
Passa -1
come valore e NumPy calcolerà questo numero per te.
Esempio
Converti array 1D con 8 elementi in array 3D con elementi 2x2:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)
Nota: non possiamo passare -1
a più di una dimensione.
Appiattimento degli array
Appiattire un array significa convertire un array multidimensionale in un array 1D.
Possiamo usare reshape(-1)
per farlo.
Esempio
Converti l'array in un array 1D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr
= arr.reshape(-1)
print(newarr)
Nota: ci sono molte funzioni per modificare le forme degli array in numpy flatten
, ravel
e anche per riorganizzare gli elementi rot90
, flip
, fliplr
, flipud
ecc. Questi rientrano nella sezione da Intermedio ad Avanzato di numpy.