O critério a ser cumprido para fornecer a nova forma é que 'A nova forma deve ser compatível com a forma original'
numpy nos permite fornecer um dos novos parâmetros de forma como -1 (por exemplo: (2, -1) ou (-1,3), mas não (-1, -1)). Significa simplesmente que é uma dimensão desconhecida e queremos que fique entorpecido. E numpy descobrirá isso analisando o 'comprimento da matriz e as dimensões restantes' e garantindo que ele atenda aos critérios mencionados acima
Agora veja o exemplo.
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
Agora tentando remodelar com (-1). A nova forma do resultado é (12,) e é compatível com a forma original (3,4)
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Agora tentando remodelar com (-1, 1). Fornecemos a coluna como 1, mas as linhas como desconhecidas. Portanto, obtemos o resultado de uma nova forma como (12, 1). Novamente compatível com a forma original (3,4)
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
O acima é consistente com a numpy
mensagem de aviso / erro, para usar reshape(-1,1)
em um único recurso; ou seja, coluna única
Remodelar seus dados usando array.reshape(-1, 1)
se os dados tiverem um único recurso
Nova forma como (-1, 2). linha desconhecida, coluna 2. obtemos o resultado em nova forma como (6, 2)
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
Agora, tentando manter a coluna como desconhecida. Nova forma como (1, -1). ou seja, linha é 1, coluna desconhecida. obtemos resultado nova forma como (1, 12)
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
O acima é consistente com a numpy
mensagem de aviso / erro, para usar reshape(1,-1)
em uma única amostra; ou seja, linha única
Remodelar seus dados usando array.reshape(1, -1)
se contiver uma única amostra
Nova forma (2, -1). Linha 2, coluna desconhecida. obtemos resultado nova forma como (2,6)
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Nova forma como (3, -1). Linha 3, coluna desconhecida. obtemos resultado nova forma como (3,4)
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
E, finalmente, se tentarmos fornecer ambas as dimensões como desconhecidas, ou seja, uma nova forma como (-1, -1). Irá gerar um erro
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
modo a manter o mesmo número de elementos.