Opérations par élément #
Les opérations par élément appliquent une opération donnée à chaque élément du tableau indépendamment. Tu peux effectuer des additions, des soustractions, et même des multiplications et des divisions sur les tableaux.
Broadcasting : NumPy permet d’effectuer des opérations entre des tableaux de formes (shape) et de tailles différentes, ce que l’on appelle le broadcasting (ou diffusion en français). Le broadcasting ajuste automatiquement la forme du plus petit tableau pour qu’elle corresponde à celle du plus grand, ce qui la rend compatible avec les opérations par éléments.
# Création de tableaux NumPy 1D arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) scalaire = 2 # Addition result_add = arr1 + arr2 # [5, 7, 9] # Multiplication, de même que soustraction et division. result_mul = arr1 * arr2 # [4, 10, 18] # Création de tableaux NumPy 2D matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) # Multiplication (par éléments, pas par matrice) result_mul = matrix1 * matrix2 # [[5, 12], [21, 32]] # Multiplication matricielle réelle à l'aide de np.dot matrix_multiplication = np.dot(matrix1,matrix2) # Broadcasting : Multiplier un tableau par un scalaire result = arr1 * scalaire # [2, 4, 6]
Ajouter et supprimer des éléments #
Pour ajouter des tableaux dans NumPy, tu peux utiliser la fonction numpy.append()
. Cette fonction te permet d’ajouter des éléments à la fin d’un tableau existant le long d’un axe spécifié.
Garde à l’esprit que np.append()
renvoie un nouveau tableau avec les éléments ajoutés ; elle ne modifie donc pas les tableaux d’origine. Si tu souhaites modifier un tableau existant (à la place), tu peux utiliser des méthodes telles que np.concatenate()
ou utiliser des instructions d’affectation.
Nous pouvons utiliser np.delete
pour supprimer les éléments d’un tableau.
# Créer un tableau original_array = np.array([1, 2, 3]) # Ajouter des éléments à la place original_array = np.append(original_array, [4, 5, 6]) # Créer un tableau NumPy arr = np.array([1, 2, 3, 4, 5]) # Supprimer l'élément à l'index 2 (valeur 3) new_arr = np.delete(arr, 2) # Créer un tableau NumPy 2D arr = np.array([[1, 2, 3], [4,5, 6], [7, 8, 9]]) # Supprimer la deuxième ligne (index 1) new_arr = np.delete(arr, 1, axis=0)
Fonctions d’agrégation et ufuncs #
NumPy fournit des fonctions intégrées pour les opérations d’agrégation courantes sur les tableaux, notamment la moyenne, la somme, le minimum, le maximum, etc. NumPy fournit également des fonctions universelles (ufuncs) qui opèrent par élément sur les tableaux, y compris des fonctions mathématiques, trigonométriques et exponentielles.
# Création d'un tableau NumPy arr = np.array([1, 2, 3, 4, 5]) # Fonctions d'agrégation mean_value = np.mean(arr) # Moyenne : 3.0 median_value = np.median(arr) # Médiane : 3.0 variance = np.var(arr) # Variance 2.0 standard_deviation = np.std(arr) # std : 1.414 sum_value = np.sum(arr) # Somme : 15 min_value = np.min(arr) # Minimum : 1 max_value = np.max(arr) # Maximum : 5 # Fonctions universelles sqrt_arr = np.sqrt(arr) # Racine carrée exp_arr = np.exp(arr) # Exponentielle
Remodelage des tableaux #
Tu peux modifier la forme d’un tableau sans modifier ses données à l’aide de la méthode reshape
, par exemple pour aplatir un tableau (le convertir en un tableau 1D) ou pour le transformer en un tableau de dimension supérieure (par exemple, de 1D à 2D ou de 2D à 3D).
La méthode reshape
peut s’avérer particulièrement utile lorsque tu dois préparer des données pour diverses opérations, telles que la multiplication de matrices, la convolution ou l’affichage d’images.
La méthode reshape
permet de transmettre la forme du résultat attendu. Le nombre total d’éléments du tableau d’origine doit correspondre au nombre total d’éléments de la nouvelle forme. En d’autres termes, le produit des dimensions de la nouvelle forme doit être égal au nombre total d’éléments du tableau d’origine. NumPy lèvera une erreur si cette condition n’est pas remplie.
import numpy as np # Création d'un tableau 2D arr_2d = np.array([[1, 2, 3], [4, 5, 6]]) # Ici, comme nous ne passons que 6 éléments, le tableau 2d sera converti en tableau 1d. # avec 6 éléments, tu ne peux pas passer autre chose que 6, # car cela ne correspond pas au tableau d'origine ! arr_1d = arr_2d.reshape(6) # Création d'un tableau 1D arr_1d = np.array([1, 2, 3, 4, 5, 6]) # Conversion d'un tableau 1D en 2D arr_2d = arr_1d.reshape(2, 3)
Comprendre comment utiliser -1 : Pour faire simple, tu peux utiliser -1
comme placeholder dans n’importe quelle dimension de la nouvelle forme, et NumPy calculera automatiquement la taille pour cette dimension.
from skimage import data # Chargement d'un échantillon d'image en niveaux de gris image = data.coins() # Forme originale de l'image print("Forme originale de l'image :", image.shape) # Forme originale de l'image : (303, 384) # Donc, si vous voulez la convertir en 1D, vous devez passer 116352 (303*384) # Au lieu de cela, si vous ne voulez pas calculer cela et laisser numpy s'en occuper, # dans ce cas, vous pouvez simplement passer 116352 à numpy, # dans ce cas, vous pouvez simplement passer -1, et il calculera 116352 reshaped_image = image.reshape(-1) # Création d'un tableau 1D avec 12 éléments arr = np.arange(12) # Remodelage/reshaping en un tableau 2D avec un nombre inconnu de colonnes (-1) reshaped_arr = arr.reshape(4, -1)