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.Usado para remodelar uma matriz.
Digamos que temos uma matriz tridimensional de dimensões 2 x 10 x 10:
Agora, queremos remodelar para 5 x 5 x 8:
fará o trabalho.
Observe que, depois de corrigir a primeira dim = 5 e a segunda dim = 5, você não precisa determinar a terceira dimensão. Para ajudar sua preguiça, python oferece a opção -1:
lhe dará uma matriz de forma = (5, 5, 8).
Da mesma forma,
lhe dará uma matriz de forma = (50, 4)
Você pode ler mais em http://anie.me/numpy-reshape-transpose-theano-dimshuffle/
fonte
De acordo com
the documentation
:fonte
[8]
porque a documentação diz isso (1-D array
). Tentenumpy.reshape(a, [8])
. Ele produz o mesmo resultadonumpy.reshape(a, [1,8])
para a matriz.numpy.reshape (a, newshape, order {}), verifique o link abaixo para obter mais informações. https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
para o exemplo abaixo, você mencionou que a saída explica que o vetor resultante é uma única linha. (- 1) indica o número de linhas como 1. se o
resultado:
matriz ([[1, 2, 3, 4, 5, 6, 7, 8]])
isso pode ser explicado mais precisamente com outro exemplo:
output: (é uma matriz colunar unidimensional)
matriz ([[0],
b = np.arange (10) .reshape ((1, -1))
output: (é uma matriz de linhas unidimensionais)
matriz ([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]))
fonte
É bastante fácil de entender. O "-1" significa "dimensão desconhecida", que pode ser deduzida de outra dimensão. Nesse caso, se você definir sua matriz assim:
Modifique sua matriz assim:
Ele chamará algumas operações de surdez para a matriz a, que retornará uma matriz numpy 1-d / martrix.
No entanto, não acho que seja uma boa ideia usar código como este. Por que nao tentar:
Ele fornecerá o mesmo resultado e é mais claro para os leitores entenderem: Defina b como outra forma de a. Para a, não sabemos quantas colunas ele deve ter (defina-o como -1!), Mas queremos uma matriz de 1 dimensão (defina o primeiro parâmetro como 1!).
fonte
Para encurtar a história : você define algumas dimensões e deixa o NumPy definir o (s) restante (s).
fonte
Significa simplesmente que você não tem certeza sobre o número de linhas ou colunas que pode fornecer e está pedindo ao numpy para sugerir o número de colunas ou linhas a serem remodeladas.
numpy fornece o último exemplo para -1 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
verifique abaixo o código e sua saída para entender melhor sobre (-1):
CÓDIGO:-
RESULTADO :-
fonte
fonte
O resultado final da conversão é que o número de elementos na matriz final é igual ao número da matriz ou quadro de dados inicial.
-1 corresponde à contagem desconhecida da linha ou coluna. podemos pensar nisso como
x
(desconhecido).x
é obtido dividindo o número de elementos na matriz original pelo outro valor do par ordenado com -1.Exemplos
12 elementos com remodelagem (-1,1) correspondem a uma matriz com
x
= 12/1 = 12 linhas e 1 coluna.12 elementos com remodelagem (1, -1) correspondem a uma matriz com 1 linha e
x
= 12/1 = 12 colunas.fonte