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 -1come 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 -1a 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, ravele anche per riorganizzare gli elementi rot90, flip, fliplr, flipudecc. Questi rientrano nella sezione da Intermedio ad Avanzato di numpy.


Mettiti alla prova con gli esercizi

Esercizio:

Utilizzare il metodo NumPy corretto per modificare la forma di una matrice da 1D a 2D.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)