NumPy (Numerical Python) est une bibliothèque fondamentale pour le calcul scientifique en Python. Elle permet de travailler efficacement avec des tableaux multidimensionnels et offre une large gamme d’opérations mathématiques optimisées.
L’intérêt principal de NumPy est sa capacité à effectuer des calculs beaucoup plus rapidement que les structures de données classiques en Python comme les listes. En effet, NumPy repose sur des algorithmes optimisés et implémentés en C, ce qui améliore considérablement la performance et réduit le temps de calcul.
Objectifs de ce cours : - Comprendre et manipuler les tableaux (ndarray
) de NumPy - Appliquer des opérations mathématiques et statistiques - Optimiser les calculs avec le broadcasting et la vectorisation - Transformer et structurer les données efficacement
NumPy est inclus dans de nombreuses distributions Python, mais s’il n’est pas installé, utilisez la commande suivante :
Ensuite, importez NumPy dans votre script Python :
L’alias np
est utilisé par convention pour éviter d’avoir à taper numpy
en entier à chaque fois.
NumPy repose sur une structure de données appelée ndarray (N-dimensional array), qui est un tableau multidimensionnel homogène, optimisé pour les opérations mathématiques.
ndarray
)Les tableaux NumPy peuvent être créés à partir de listes Python, de valeurs prédéfinies ou de valeurs générées automatiquement :
# Création d'un tableau à partir d'une liste
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)
# Tableau multidimensionnel
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
D’autres méthodes permettent de générer rapidement des tableaux :
np.zeros((3, 3)) # Matrice 3x3 remplie de 0
np.ones((2, 4)) # Matrice 2x4 remplie de 1
np.full((3, 3), 7) # Matrice 3x3 remplie de 7
np.eye(4) # Matrice identité 4x4
np.linspace(0, 10, 5) # 5 valeurs espacées entre 0 et 10
Pourquoi ces méthodes sont utiles ?
zeros
et ones
permettent d’initialiser rapidement des tableaux sans avoir à taper les valeurs une à une.eye
est très utilisé en algèbre linéaire pour les calculs de matrices identité.linspace
est idéal pour générer des valeurs numériques espacées uniformément.Exercice 1 :
L’accès aux éléments d’un tableau NumPy se fait de manière similaire aux listes Python, mais avec des fonctionnalités supplémentaires.
L’indexation commence toujours à 0 en Python, donc arr[2]
retourne 30.
NumPy permet d’accéder à des sous-ensembles de tableaux plus facilement :
Avec NumPy, on peut extraire plusieurs valeurs avec des tranches (slices) :
Pourquoi utiliser le slicing ?
Exercice 2 :
NumPy permet d’effectuer des calculs mathématiques sur des tableaux de manière optimisée. Ces opérations peuvent être appliquées élément par élément sans nécessiter de boucle explicite.
arr = np.array([1, 2, 3, 4, 5])
print(arr + 10) # Ajouter 10 à chaque élément
print(arr ** 2) # Élever chaque élément au carré
Pourquoi ces opérations sont-elles utiles ?
NumPy fournit également des fonctions statistiques :
Exercice 3 : - Créez une matrice 5x5 remplie de nombres aléatoires et calculez sa moyenne et son écart-type.
Le reshaping permet de modifier la structure d’un tableau sans en changer les données. Cela est très utile lorsqu’on manipule des matrices pour l’apprentissage automatique ou la visualisation des données.
La transposition est également une technique couramment utilisée pour réarranger les axes d’un tableau :
Exercice 4 : - Créez une matrice 3x3 et affichez sa transposée.
Le broadcasting est un mécanisme puissant de NumPy qui permet d’effectuer des opérations entre tableaux de tailles différentes sans copier les données.
Pourquoi le broadcasting est important ? - Il permet d’optimiser les calculs en évitant la création de copies inutiles. - Il est essentiel pour le traitement efficace des images et des séries temporelles.
Exercice 5 : - Multipliez une matrice par un vecteur ligne avec broadcasting.
NumPy offre plusieurs fonctions pour détecter et gérer les valeurs manquantes dans les jeux de données.
arr = np.array([1, 2, np.nan, 4, 5])
print(np.isnan(arr)) # Détecter les NaN
print(np.nanmean(arr)) # Moyenne en ignorant NaN
Pourquoi est-ce utile ? - En analyse de données, les valeurs manquantes sont courantes et doivent être traitées pour éviter les erreurs dans les calculs. - NumPy permet de gérer ces valeurs sans nécessiter de prétraitement complexe.
Exercice 6 : - Remplacez les valeurs NaN par la moyenne du tableau.
NumPy est souvent utilisé pour des applications pratiques en science des données et en intelligence artificielle.
sim_data = np.random.randn(1000)
print(np.histogram(sim_data, bins=10)) # Histogramme des valeurs simulées
Exercice 7 : - Simulez une série de valeurs et tracez son histogramme.
Ce cours vous a permis de maîtriser :