La manipulation efficace des formes de tableau est fondamentale pour un traitement efficace des données avec NumPy. Ce tutoriel explore deux fonctions essentielles pour remodeler et redimensionner les tableaux NumPy : reshape()
et resize()
. Nous explorerons leurs fonctionnalités, leurs subtiles différences et les meilleures pratiques pour vous permettre de les utiliser en toute confiance dans vos projets de science des données.
Table des matières
1. numpy.reshape()
La fonction numpy.reshape()
est un outil polyvalent pour modifier la forme d’un tableau NumPy sans modifier ses données sous-jacentes. Elle nécessite le tableau et la nouvelle forme souhaitée comme entrées. Il est crucial que la nouvelle forme soit compatible avec la taille du tableau original (le nombre total d’éléments doit rester inchangé).
import numpy as np
arr = np.arange(12) # Crée un tableau [0, 1, 2, ..., 11]
print("Tableau original :n", arr)
reshaped_arr = np.reshape(arr, (3, 4)) # Remodeler en matrice 3x4
print("nTableau remodelé :n", reshaped_arr)
#Utilisation de -1 pour le calcul automatique de la dimension
auto_reshape = np.reshape(arr, (-1, 3))
print("nTableau remodelé automatiquement :n", auto_reshape)
#Gestion des erreurs pour les formes incompatibles
try:
invalid_reshape = np.reshape(arr, (2,7))
print(invalid_reshape)
except ValueError as e:
print(f"nErreur : {e}")
2. ndarray.reshape()
La méthode ndarray.reshape()
offre une approche alternative, agissant directement sur un objet ndarray
existant. Ses fonctionnalités sont identiques à celles de numpy.reshape()
; la seule différence réside dans la méthode d’invocation.
arr = np.arange(12)
reshaped_arr = arr.reshape((4, 3)) # Appel de méthode
print("nTableau remodelé (appel de méthode) :n", reshaped_arr)
3. Considérations sur la mémoire partagée
numpy.reshape()
et ndarray.reshape()
fonctionnent généralement sur place. Cela signifie qu’ils ne créent pas de copie des données du tableau ; au lieu de cela, ils modifient la vue des données sous-jacentes. Ceci est très efficace en termes de mémoire. Les modifications apportées au tableau remodelé se répercutent sur l’original, et vice versa. Cependant, cela nécessite également une attention particulière, surtout si vous devez préserver le contenu du tableau d’origine. Pour créer une copie, utilisez la méthode .copy()
:
arr = np.arange(12)
reshaped_arr = arr.reshape((3,4))
reshaped_arr[0,0] = 99 # Modifie également le tableau d'origine !
print("nTableau original après modification du remodelage :n", arr)
arr = np.arange(12)
reshaped_arr_copy = arr.reshape((3,4)).copy() #Crée une copie
reshaped_arr_copy[0,0] = 100 # Modifie uniquement la copie
print("nTableau original après modification de la copie :n", arr)
4. numpy.resize()
La fonction numpy.resize()
offre la possibilité de modifier la taille d’un tableau, contrairement à reshape()
, qui préserve le nombre total d’éléments. resize()
peut modifier le nombre d’éléments. Si la nouvelle taille est plus grande, le tableau est complété par des zéros ou des éléments répétés. S’il est plus petit, les éléments sont tronqués. Il est important de noter que resize()
*retourne toujours* un nouveau tableau ; il ne modifie pas l’original sur place.
arr = np.arange(5)
resized_arr = np.resize(arr, (8,)) # Redimensionner à la longueur 8
print("nTableau redimensionné (complété par des zéros) :n", resized_arr)
resized_arr_2 = np.resize(arr,(2,)) #Redimensionner à la longueur 2
print("nTableau redimensionné (tronqué) :n", resized_arr_2)
resized_arr_3 = np.resize(arr, (2,3)) #Redimensionner à 2x3, répétera le tableau
print("nTableau redimensionné (répété) :n", resized_arr_3)
Ce tutoriel fournit un aperçu complet du remodelage et du redimensionnement des tableaux NumPy. La maîtrise de ces techniques est essentielle pour une manipulation efficace des données en calcul scientifique et en science des données.