Il criterio da soddisfare per fornire la nuova forma è che "La nuova forma dovrebbe essere compatibile con la forma originale"
numpy ci permette di dare uno dei nuovi parametri di forma come -1 (es: (2, -1) o (-1,3) ma non (-1, -1)). Significa semplicemente che si tratta di una dimensione sconosciuta e vogliamo che numpy lo capisca. E numpy lo capirà guardando la 'lunghezza dell'array e le dimensioni rimanenti' e assicurandosi che soddisfi i criteri sopra menzionati
Ora vedi l'esempio.
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
Ora provo a rimodellare con (-1). Risultato la nuova forma è (12,) ed è compatibile con la forma originale (3,4)
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Ora provo a rimodellare con (-1, 1). Abbiamo fornito la colonna come 1 ma le righe come sconosciute. Quindi otteniamo una nuova forma come (12, 1). Di nuovo compatibile con la forma originale (3,4)
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
Quanto sopra è coerente con numpy
il messaggio di avviso / errore, da utilizzare reshape(-1,1)
per una singola funzione; cioè singola colonna
Rimodella i tuoi dati usando array.reshape(-1, 1)
se i tuoi dati hanno una singola funzione
Nuova forma come (-1, 2). riga sconosciuta, colonna 2. otteniamo il risultato nuova forma come (6, 2)
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
Ora provo a mantenere la colonna sconosciuta. Nuova forma come (1, -1). vale a dire, la riga è 1, colonna sconosciuta. otteniamo una nuova forma come (1, 12)
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
Quanto sopra è coerente con numpy
il messaggio di avviso / errore, da utilizzare reshape(1,-1)
per un singolo campione; cioè fila singola
Rimodella i tuoi dati usando array.reshape(1, -1)
se contiene un singolo campione
Nuova forma (2, -1). Riga 2, colonna sconosciuta. otteniamo una nuova forma come (2,6)
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Nuova forma come (3, -1). Riga 3, colonna sconosciuta. otteniamo una nuova forma come (3,4)
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
E infine, se proviamo a fornire entrambe le dimensioni come sconosciute, ovvero nuova forma come (-1, -1). Si genererà un errore
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
modo da mantenere lo stesso numero di elementi.