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.