Remodelage du tableau NumPy


Remodeler les tableaux

Remodeler signifie changer la forme d'un tableau.

La forme d'un tableau est le nombre d'éléments dans chaque dimension.

En remodelant, nous pouvons ajouter ou supprimer des dimensions ou modifier le nombre d'éléments dans chaque dimension.


Remodeler de 1-D à 2-D

Exemple

Convertissez le tableau 1-D suivant avec 12 éléments en un tableau 2-D.

La dimension la plus externe aura 4 tableaux, chacun avec 3 éléments :

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

Remodeler de 1-D à 3-D

Exemple

Convertissez le tableau 1-D suivant avec 12 éléments en un tableau 3-D.

La dimension la plus externe aura 2 tableaux contenant 3 tableaux, chacun avec 2 éléments :

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)


Pouvons-nous remodeler dans n'importe quelle forme ?

Oui, tant que les éléments nécessaires au remodelage sont égaux dans les deux formes.

Nous pouvons remodeler un tableau 1D à 8 éléments en 4 éléments dans un tableau 2D à 2 lignes, mais nous ne pouvons pas le remodeler en un tableau 2D à 3 éléments et 3 lignes car cela nécessiterait 3x3 = 9 éléments.

Exemple

Essayez de convertir un tableau 1D avec 8 éléments en un tableau 2D avec 3 éléments dans chaque dimension (cela générera une erreur):

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

Copier ou afficher ?

Exemple

Vérifiez si le tableau renvoyé est une copie ou une vue :

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

L'exemple ci-dessus renvoie le tableau d'origine, il s'agit donc d'une vue.


Dimension inconnue

Vous êtes autorisé à avoir une dimension "inconnue".

Cela signifie que vous n'avez pas à spécifier un nombre exact pour l'une des dimensions dans la méthode de remodelage.

Passez -1comme valeur et NumPy calculera ce nombre pour vous.

Exemple

Convertissez un tableau 1D avec 8 éléments en tableau 3D avec 2x2 éléments :

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

Remarque : Nous ne pouvons pas passer -1à plus d'une dimension.


Aplatir les tableaux

Aplatir un tableau signifie convertir un tableau multidimensionnel en un tableau 1D.

Nous pouvons utiliser reshape(-1)pour le faire.

Exemple

Convertissez le tableau en tableau 1D :

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

Remarque : Il existe de nombreuses fonctions pour modifier les formes des tableaux dans numpy flatten, ravelainsi que pour réorganiser les éléments rot90, flip, fliplr, flipudetc. Celles-ci relèvent de la section Intermédiaire à Avancé de numpy.


Testez-vous avec des exercices

Exercer:

Utilisez la méthode NumPy correcte pour changer la forme d'un tableau de 1-D à 2-D.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)