Come cambiare le dimensioni di un array in Python
Per modificare la dimensione di un array in Python si usa il metodo reshape della libreria numpy.
reshape(a,d)
- Il primo argomento (a) è il nome dell'array ( vettore o matrice ) da trasformare.
- Il secondo argomento (d) è un numero o una tupla con le nuove dimensioni, il nuovo numero di righe e di colonne dell'array.
La funzione reshape modifica la dimensione dell'array senza cancellare gli elementi.
Attenzione. La nuova dimensione deve essere uguale alla cardinalità del vecchio array. Ad esempio, se un vettore ha 10 elementi, può essere trasformato in una matrice 5x2 o 2x5. Non può essere trasformato in una matrice 3x3 o altro.
Esempio
Esempio 1 ( da vettore a matrice )
Creare un array con 10 elementi tramite il metodo array.
import numpy as np
x=np.array([1,2,3,4,5,6,7,8,9,10])
L'array x ha una dimensione. È un vettore.
Modificare l'array in una matrice 5x2 con la funzione reshape.
y=np.reshape(x,[5,2])
L'array y ha due dimensioni.
>>> y
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10]])
Ha gli stessi elementi del vettore x ma disposti in una matrice.
Esempio 2
E' possibile ottenere lo stesso risultato dell'esempio precedente usando reshape come metodo.
y=x.reshape([5,2])
Il risultato finale è lo stesso.
Esempio 3 ( da matrice a vettore )
Creare una matrice 2x5
import numpy as np
x=np.array([[1,2,3,4,5],[6,7,8,9,10]])
L'array x ha due dimensioni
>>> x
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
Trasformare la matrice in un vettore.
z=np.reshape(x,10)
Il nuovo array ha una dimensione.
>>> z
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])