Le critère à satisfaire pour fournir la nouvelle forme est que «la nouvelle forme doit être compatible avec la forme d'origine»
numpy nous permet de donner l'un des nouveaux paramètres de forme comme -1 (par exemple: (2, -1) ou (-1,3) mais pas (-1, -1)). Cela signifie simplement que c'est une dimension inconnue et nous voulons que numpy la comprenne. Et numpy le comprendra en regardant la «longueur du tableau et les dimensions restantes» et en s'assurant qu'il satisfait aux critères mentionnés ci-dessus
Maintenant, voyez l'exemple.
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
Essayez maintenant de remodeler avec (-1). Résultat: la nouvelle forme est (12,) et est compatible avec la forme d'origine (3,4)
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Essayez maintenant de remodeler avec (-1, 1). Nous avons fourni la colonne comme 1 mais les lignes comme inconnues. Nous obtenons donc un résultat de nouvelle forme comme (12, 1) .Compatible avec la forme d'origine (3,4)
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
Ce qui précède est cohérent avec les numpy
conseils / messages d'erreur, à utiliser reshape(-1,1)
pour une seule fonctionnalité; c'est-à-dire une seule colonne
Remodeler vos données en utilisant array.reshape(-1, 1)
si vos données ont une seule fonctionnalité
Nouvelle forme comme (-1, 2). ligne inconnue, colonne 2. nous obtenons le résultat nouvelle forme comme (6, 2)
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
Essayez maintenant de garder la colonne inconnue. Nouvelle forme comme (1, -1). c'est-à-dire que la ligne est 1, la colonne est inconnue. nous obtenons une nouvelle forme de résultat comme (1, 12)
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
Ce qui précède est conforme aux numpy
conseils / messages d'erreur, à utiliser reshape(1,-1)
pour un seul échantillon; c'est-à-dire une seule rangée
Remodeler vos données en utilisant array.reshape(1, -1)
si elles contiennent un seul échantillon
Nouvelle forme (2, -1). Ligne 2, colonne inconnue. on obtient le résultat nouvelle forme comme (2,6)
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Nouvelle forme comme (3, -1). Ligne 3, colonne inconnue. on obtient le résultat nouvelle forme comme (3,4)
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Et enfin, si nous essayons de fournir les deux dimensions comme inconnues, c'est-à-dire une nouvelle forme comme (-1, -1). Cela lancera une erreur
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
pour conserver le même nombre d'éléments.Utilisé pour remodeler un tableau.
Disons que nous avons un tableau en 3 dimensions de dimensions 2 x 10 x 10:
Maintenant, nous voulons remodeler en 5 X 5 x 8:
fera le travail.
Notez qu'une fois que vous fixez le premier dim = 5 et le deuxième dim = 5, vous n'avez pas besoin de déterminer la troisième dimension. Pour aider votre paresse, python donne l'option -1:
vous donnera un tableau de forme = (5, 5, 8).
Également,
vous donnera un tableau de forme = (50, 4)
Vous pouvez en savoir plus sur http://anie.me/numpy-reshape-transpose-theano-dimshuffle/
la source
Selon
the documentation
:la source
[8]
parce que la documentation le dit (1-D array
). Essayeznumpy.reshape(a, [8])
. Il donne le même résultat quenumpy.reshape(a, [1,8])
pour la matrice.numpy.reshape (a, newshape, order {}) consultez le lien ci-dessous pour plus d'informations. https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
pour l'exemple ci-dessous, vous avez mentionné que la sortie explique que le vecteur résultant est une seule ligne. (- 1) indique le nombre de lignes à 1. si le
production:
matrice ([[1, 2, 3, 4, 5, 6, 7, 8]])
cela peut être expliqué plus précisément avec un autre exemple:
sortie: (est un tableau en colonnes à 1 dimension)
tableau ([[0],
b = np.arange (10) .reshape ((1, -1))
sortie: (est un tableau de lignes à 1 dimension)
tableau ([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
la source
C'est assez facile à comprendre. Le "-1" signifie "dimension inconnue" qui peut être déduit d'une autre dimension. Dans ce cas, si vous définissez votre matrice comme ceci:
Modifiez votre matrice comme ceci:
Il appellera des opérations sourdes à la matrice a, qui renverra un tableau / martrix numpy 1-d.
Cependant, je ne pense pas que ce soit une bonne idée d'utiliser du code comme celui-ci. Pourquoi ne pas essayer:
Cela vous donnera le même résultat et il est plus clair pour les lecteurs de comprendre: Définissez b comme une autre forme de a. Pour a, nous ne savons pas combien de colonnes il devrait avoir (définissez-le sur -1!), Mais nous voulons un tableau à 1 dimension (définissez le premier paramètre sur 1!).
la source
Pour faire court : vous définissez certaines dimensions et laissez NumPy définir les autres.
la source
Cela signifie simplement que vous n'êtes pas sûr du nombre de lignes ou de colonnes que vous pouvez donner et que vous demandez à numpy de suggérer le nombre de colonnes ou de lignes à remodeler.
numpy fournit le dernier exemple pour -1 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
vérifiez le code ci-dessous et sa sortie pour mieux comprendre (-1):
CODE:-
PRODUCTION :-
la source
la source
Le résultat final de la conversion est que le nombre d'éléments dans le tableau final est le même que celui du tableau ou de la trame de données initial.
-1 correspond au nombre inconnu de la ligne ou de la colonne. nous pouvons le considérer comme
x
(inconnu).x
est obtenu en divisant le nombre d'éléments du tableau d'origine par l'autre valeur de la paire ordonnée avec -1.Exemples
12 éléments avec remodeler (-1,1) correspond à un tableau avec
x
= 12/1 = 12 lignes et 1 colonne.12 éléments avec remodeler (1, -1) correspond à un tableau avec 1 ligne et
x
= 12/1 = 12 colonnes.la source