Cours Python Partie2
Cours Python Partie2
Emmanuel Evilafo
2024
2
Module 1 : Introduction à Python et Premiers Pas
Durée : 2 heures
Objectifs :
Python est un langage de programmation de haut niveau créé par Guido van Rossum en
1991. Reconnu pour sa simplicité, sa lisibilité et sa polyvalence, Python est utilisé dans
plusieurs domaines, notamment :
Installation de Python
Installation d'Anaconda
3
Anaconda est une distribution Python qui comprend plusieurs bibliothèques essentielles ainsi
que des outils comme Jupyter Notebook pour faciliter l’écriture de code interactif.
Vérification de l'installation
bash
conda --version
print("Hello, World!")
Hello, World!
• Explication :
o La fonction print() affiche du texte à l'écran.
o "Hello, World!" est une chaîne de caractères (texte délimité par des
guillemets).
4
Python permet de stocker des informations dans des variables. Les types de données les plus
courants incluent :
Exemple :
nom = "Alice"
age = 25
est_majeur = True
print(nom, "a", age, "ans. Est-elle majeure ?", est_majeur)
Cela permet à l’utilisateur d’entrer son nom, et le programme lui répond de manière
personnalisée.
Manipulations basiques
a = 10
b = 3
print("Addition :", a + b)
print("Soustraction :", a - b)
print("Multiplication :", a * b)
print("Division :", a / b)
print("Division entière :", a // b)
Écrivez un programme qui demande le nom et l'âge de l'utilisateur, puis affiche un message
personnalisé :
5
nom = input("Quel est votre nom ? ")
age = int(input("Quel est votre âge ? "))
print("Bonjour", nom, "! Vous avez", age, "ans.")
Cet exercice permet de consolider les bases : interaction avec l'utilisateur, utilisation de
variables et manipulation de types de données.
6
Module 2 : Variables, Opérations et Fonctions
Durée : 2 heures
Objectifs :
Une variable est une boîte qui stocke des informations. En Python, il suffit d’attribuer une
valeur à un nom de variable pour la créer :
nom = "Alice"
age = 30
Ici, nom est une variable de type chaîne de caractères (str) et age est une variable de type
entier (int).
Exemples :
Il est parfois nécessaire de convertir un type de données en un autre. Par exemple, convertir
une chaîne en nombre :
7
age = int(input("Entrez votre âge : ")) # Conversion en entier
taille = float(input("Entrez votre taille : ")) # Conversion en flottant
Python offre des fonctions intégrées telles que int(), float(), str() pour convertir entre les
types de données.
Opérateurs arithmétiques
Les opérateurs de base permettent de faire des calculs sur des nombres :
Exemple d'utilisation :
a = 5
b = 2
print("Addition :", a + b)
print("Division entière :", a // b)
print("Puissance :", a ** b)
Opérateurs de comparaison
Ces opérateurs permettent de comparer des valeurs et retournent des booléens (True ou
False) :
8
Opérateurs logiques
a = 5
b = 2
print((a > 3) and (b < 5)) # True
Une fonction est un bloc de code qui effectue une tâche spécifique et peut être réutilisé.
Python propose de nombreuses fonctions intégrées (comme print()), mais vous pouvez
également définir vos propres fonctions.
Une fonction est définie avec le mot-clé def, suivi du nom de la fonction et de parenthèses.
Exemple :
def dire_bonjour():
print("Bonjour, tout le monde!")
Les fonctions peuvent prendre des paramètres qui sont des données fournies lors de l'appel
de la fonction :
def saluer(nom):
print("Bonjour,", nom)
9
Appel de la fonction avec un argument :
Les fonctions peuvent également renvoyer des valeurs à l’aide du mot-clé return :
Appel de la fonction :
resultat = additionner(3, 4)
print(resultat) # Affichera : 7
Les variables définies à l'intérieur d'une fonction sont locales à cette fonction et ne peuvent
pas être utilisées à l'extérieur. À l'inverse, les variables globales peuvent être accessibles dans
toute la durée du programme.
Exemple :
x = 10 # Variable globale
def ma_fonction():
x = 5 # Variable locale
print("Dans la fonction :", x)
ma_fonction() # Affiche : 5
print("En dehors de la fonction :", x) # Affiche : 10
10
return a - b
elif operation == '*':
return a * b
elif operation == '/':
return a / b
else:
return "Opération non valide"
# Utilisation
a = float(input("Entrez le premier nombre : "))
b = float(input("Entrez le deuxième nombre : "))
operation = input("Entrez l'opération (+, -, *, /) : ")
resultat = calculatrice(a, b, operation)
print("Le résultat est :", resultat)
Cet exercice vous permettra de manipuler des fonctions, des variables et des opérateurs.
11
Module 3 : Structures de Contrôle
Durée : 2 heures
Objectifs :
Structure de base
La condition if permet d'exécuter un bloc de code seulement si une condition est vraie :
age = 18
age = 16
La clause elif (else if) permet de tester plusieurs conditions dans une structure :
note = 15
12
elif note >= 10:
print("Passable.")
else:
print("Insuffisant.")
Conditions imbriquées
Vous pouvez imbriquer des conditions pour des cas plus complexes :
age = 20
nationalite = "française"
Les boucles permettent d'exécuter un bloc de code plusieurs fois. Python propose deux types
de boucles principales : for et while.
La boucle for
La boucle for est utilisée pour parcourir une séquence (liste, chaîne de caractères, etc.).
La fonction range() génère une séquence de nombres, très utile pour contrôler le nombre
d'itérations dans une boucle :
for i in range(5):
print("Itération", i)
Vous pouvez aussi spécifier un début, une fin et un pas dans range() :
13
for i in range(2, 10, 2): # De 2 à 10, avec un pas de 2
print(i)
La boucle while
compteur = 0
La boucle while est utile lorsque vous ne connaissez pas à l’avance le nombre d’itérations
nécessaires.
Faites attention aux boucles infinies ! Si la condition d’arrêt d’une boucle while n’est jamais
remplie, la boucle continuera indéfiniment. Par exemple :
while True:
print("Cette boucle ne s'arrête jamais")
Cela crée une boucle infinie ; pour l’arrêter, utilisez Ctrl+C dans le terminal.
Utilisation de break
La commande break interrompt immédiatement une boucle, même si la condition n’est pas
remplie ou les itérations ne sont pas terminées :
for i in range(10):
if i == 5:
break # La boucle se termine dès que i vaut 5
print(i)
Utilisation de continue
La commande continue saute une itération, mais continue la boucle pour les itérations
suivantes :
14
for i in range(5):
if i == 3:
continue # Saute l'affichage de 3
print(i)
Les boucles peuvent être imbriquées, c’est-à-dire qu’une boucle peut être à l'intérieur d’une
autre boucle. Par exemple, pour parcourir une matrice (tableau à deux dimensions) :
matrice = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Cet exemple affiche chaque élément de la matrice sur une ligne séparée.
n = 5
Résultat pour n = 5 :
markdown
*
**
***
****
*****
Créez un jeu où l'ordinateur génère un nombre aléatoire entre 1 et 20, et l'utilisateur doit
deviner ce nombre. Après chaque tentative, le programme doit dire si le nombre est plus petit
ou plus grand. Si l'utilisateur devine correctement, le jeu se termine.
15
import random
16
Module 4 : Structures de Données (Listes, Tuples, Vecteurs, Matrices)
Durée : 2 heures
Objectifs :
Les listes sont l'une des structures de données les plus utilisées en Python. Elles permettent de
stocker une collection ordonnée d'éléments, qui peuvent être modifiés après leur création.
Une liste est créée en plaçant des éléments entre des crochets [ ], séparés par des virgules :
Les éléments d’une liste sont accessibles via leur index (position dans la liste, commençant à
0) :
Les listes sont mutables, ce qui signifie que vous pouvez changer leurs éléments après leur
création :
fruits[1] = "orange"
print(fruits) # Affiche ['pomme', 'orange', 'cerise']
17
Méthode Description Exemple
append(x) Ajoute un élément à la fin de la liste fruits.append("mangue")
remove(x) Supprime le premier élément égal à x fruits.remove("orange")
pop(i) Supprime et retourne l'élément à l'index i fruits.pop(1)
sort() Trie la liste en place fruits.sort()
reverse() Inverse l'ordre des éléments fruits.reverse()
len() Retourne la longueur de la liste len(fruits)
Vous pouvez également utiliser la fonction enumerate() pour obtenir à la fois les indices et
les éléments :
Les tuples sont similaires aux listes, mais ils sont immuables, c'est-à-dire que leurs éléments
ne peuvent pas être modifiés une fois créés.
Création de tuples
Les éléments d'un tuple sont accessibles de la même manière que pour les listes :
Contrairement aux listes, il est impossible de modifier les éléments d’un tuple :
18
# couleurs[1] = "jaune" # Provoquerait une erreur
Cependant, vous pouvez toujours accéder aux éléments et les parcourir avec une boucle for :
Les vecteurs et matrices sont des structures de données essentielles pour la manipulation de
données numériques, notamment en data science et en calcul scientifique. NumPy est une
bibliothèque Python qui permet de travailler facilement avec des vecteurs et des matrices.
Installation de NumPy
Si NumPy n'est pas installé, utilisez la commande suivante dans votre terminal pour
l'installer :
bash
En NumPy, les vecteurs sont appelés tableaux (ndarray). Voici comment créer un tableau
unidimensionnel :
import numpy as np
19
matrice = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrice)
Les éléments d'un tableau NumPy sont accessibles de la même manière que pour les listes, en
utilisant des indices :
print(vecteur[2]) # Affiche 3
print(matrice[1, 2]) # Affiche 6 (ligne 2, colonne 3)
# Opérations élémentaires
vecteur2 = vecteur + 2
print(vecteur2) # Affiche [3, 4, 5, 6, 7]
1. Manipuler une liste : Créez une liste de vos cinq plats préférés. Modifiez un élément
de la liste, puis ajoutez un nouveau plat à la fin. Enfin, triez la liste par ordre
alphabétique.
20
2. Manipuler un tableau NumPy : Créez une matrice NumPy de taille 3x3. Multipliez
chaque élément par 3.
Exemple :
# Matrice NumPy
import numpy as np
matrice = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
matrice = matrice * 3
print("Matrice multipliée par 3 :", matrice)
21
Module 5 : Dictionnaires et Compréhension de Liste
Durée : 2 heures
Objectifs :
Les dictionnaires sont des structures de données qui associent des clés à des valeurs.
Contrairement aux listes, qui sont indexées par des nombres, les dictionnaires sont indexés par
des clés qui peuvent être de n’importe quel type immuable (chaînes, nombres, etc.).
Un dictionnaire se crée en plaçant les paires clé-valeur entre accolades {} et en les séparant
par des deux-points :.
mon_dictionnaire = {
"nom": "Jean",
"age": 30,
"profession": "ingénieur"
}
Pour accéder aux valeurs d'un dictionnaire, il suffit de spécifier la clé correspondante entre
crochets [] :
Les dictionnaires sont mutables, donc on peut facilement ajouter ou modifier des paires clé-
valeur :
22
mon_dictionnaire["age"] = 31 # Modification de la valeur existante
Pour supprimer une paire clé-valeur, on peut utiliser la méthode pop() ou la commande del :
Voici quelques méthodes et fonctions utiles pour travailler avec les dictionnaires :
Parcourir un dictionnaire
Vous pouvez parcourir les clés, les valeurs ou les deux en même temps avec une boucle for :
La compréhension de liste (list comprehension) est une méthode concise pour créer des listes
à partir d'itérables tout en appliquant une condition ou une transformation à chaque élément.
Exemple simple : créer une liste contenant les carrés des nombres de 1 à 5 :
Ajout de conditions
Exemples avancés
liste = [1, 2, 3, 4, 5]
doubles = [x * 2 for x in liste]
print(doubles) # Affiche [2, 4, 6, 8, 10]
nombres = [1, 2, 3, 4, 5, 6]
nombres_pairs = [n for n in nombres if n % 2 == 0]
print(nombres_pairs) # Affiche [2, 4, 6]
24
5.3 Exercice pratique et Questions/Réponses (20 minutes)
Exemple :
# Dictionnaire
personnes = {
"Alice": {"age": 25, "profession": "docteur"},
"Bob": {"age": 30, "profession": "ingénieur"},
"Charlie": {"age": 22, "profession": "designer"}
}
# Ajout de la ville
for nom in personnes:
personnes[nom]["ville"] = "Paris"
25
Module 6 : Fonctions de Base et Modules de Base
Durée : 2 heures
Objectifs :
Une fonction est un bloc de code réutilisable conçu pour accomplir une tâche spécifique. Elle
permet de structurer un programme en morceaux modulaires et d'éviter la redondance de
code.
Les fonctions en Python sont définies à l’aide du mot-clé def, suivi du nom de la fonction et
d’une liste de paramètres entre parenthèses. Le corps de la fonction est ensuite indéxé par une
indentation.
def saluer():
print("Bonjour tout le monde!")
Après avoir défini une fonction, vous pouvez l’appeler simplement en utilisant son nom suivi
de parenthèses.
Les fonctions peuvent également prendre des paramètres pour rendre leur comportement
plus flexible.
def saluer_nom(nom):
print(f"Bonjour {nom}!")
26
saluer_nom("Alice") # Affiche "Bonjour Alice!"
resultat = additionner(3, 5)
print(resultat) # Affiche 8
Vous pouvez définir des valeurs par défaut pour les paramètres :
def saluer_nom(nom="inconnu"):
print(f"Bonjour {nom}!")
Python permet de passer des arguments de deux manières : positionnels (dans l’ordre où ils
apparaissent) ou nommés (en spécifiant explicitement la valeur pour chaque paramètre).
# Arguments positionnels
presentation("Jean", 30)
# Arguments nommés
presentation(age=25, nom="Luc")
Les fonctions lambda sont des fonctions anonymes définies en une seule ligne. Elles sont
utiles pour des opérations simples.
addition = lambda x, y: x + y
print(addition(2, 3)) # Affiche 5
27
6.2 Modules en Python (40 minutes)
Un module en Python est un fichier qui contient des fonctions, classes ou variables que vous
pouvez utiliser dans d'autres programmes. Les modules permettent d'organiser le code et de le
rendre plus modulaire et réutilisable.
Importer un module
Pour utiliser un module, il faut l’importer dans votre script avec l’instruction import :
import math
Vous pouvez également importer une fonction spécifique à partir d'un module :
Python propose de nombreux modules standards qui sont directement disponibles après
installation. Voici quelques-uns des plus courants :
Vous pouvez également créer vos propres modules en sauvegardant des fonctions dans un
fichier .py et en les important dans d'autres scripts.
# Contenu de utilitaires.py
def bonjour():
print("Salut du module utilitaires!")
28
Dans un autre script, vous pouvez l'importer ainsi :
import utilitaires
1. Exercice sur les fonctions : Créez une fonction qui prend deux paramètres et renvoie
leur produit. Ajoutez un argument par défaut pour l’un des paramètres. Ensuite,
appelez cette fonction avec différents arguments et affichez les résultats.
2. Exercice sur les modules : Utilisez le module random pour générer cinq nombres
aléatoires entre 1 et 50. Ensuite, utilisez le module datetime pour afficher la date et
l'heure actuelles.
Exemple :
print(multiplier(5)) # Affiche 10
print(multiplier(3, 4)) # Affiche 12
# Utilisation de modules
import random
import datetime
29
Module 7 : Numpy (Les Bases)
Durée : 2 heures
Objectifs :
NumPy est l’une des bibliothèques les plus utilisées pour le calcul numérique en Python. Elle
est particulièrement performante pour les manipulations de tableaux et les opérations
mathématiques sur de grandes quantités de données. NumPy offre la possibilité de travailler
avec des tableaux multidimensionnels appelés ndarray.
Installation de NumPy
Si NumPy n'est pas déjà installé dans votre environnement, vous pouvez l'installer avec la
commande suivante :
bash
Importer NumPy
import numpy as np
Un tableau NumPy est une structure de données similaire à une liste en Python, mais
beaucoup plus performante pour le traitement d'éléments numériques.
Création de tableaux
Vous pouvez créer un tableau NumPy à partir d'une liste Python, ou bien utiliser des fonctions
intégrées de NumPy pour générer des tableaux.
30
Créer un tableau à partir d'une liste :
import numpy as np
31
lin_space = np.linspace(0, 1, 5)
print(lin_space)
# Affiche : [0. 0.25 0.5 0.75 1. ]
Les tableaux NumPy possèdent plusieurs attributs utiles pour en comprendre la structure et
les manipuler efficacement.
tableau_reshaped = tableau.reshape(3, 2)
print(tableau_reshaped)
# Affiche :
# [[1 2]
# [3 4]
# [5 6]]
Les tableaux NumPy permettent de réaliser des opérations élémentaires directement sur tous
les éléments.
32
tableau = np.array([1, 2, 3, 4])
print(tableau * 2)
# Affiche : [2 4 6 8]
Exemple :
import numpy as np
33
Module 8 : Numpy (Slicing et Indexing)
Durée : 2 heures
Objectifs :
Le slicing et l'indexing sont des techniques utilisées pour extraire ou modifier des sous-
parties d'un tableau NumPy. Elles permettent de sélectionner des éléments spécifiques dans
un tableau de manière efficace, sans créer de copies inutiles.
Pour accéder à un élément spécifique dans un tableau NumPy, vous utilisez la syntaxe
d’indexation avec des crochets []. Les indices commencent à partir de 0 en Python.
import numpy as np
Pour un tableau à deux dimensions (2D), l'indexation se fait via une paire d'indices.
Le slicing permet d'extraire des sous-ensembles d'un tableau NumPy à l’aide de la syntaxe
start:stop:step.
34
Vous pouvez extraire une partie du tableau en spécifiant les indices de début et de fin :
Avec les tableaux multidimensionnels, vous pouvez effectuer un slicing sur plusieurs axes
(lignes et colonnes) :
Vous pouvez également utiliser un pas pour extraire des éléments à intervalles réguliers dans
une matrice.
tableau_2d = np.array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13,
14, 15]])
Slicing inversé
Vous pouvez inverser un tableau ou une partie de celui-ci en utilisant un pas négatif :
35
tableau_inverse = tableau[::-1]
print(tableau_inverse) # Affiche [60 50 40 30 20 10]
En plus de l'indexation simple, NumPy permet d’utiliser des listes d’indices, des tableaux
booléens, et des conditions pour sélectionner ou modifier des éléments.
Vous pouvez sélectionner des éléments spécifiques d'un tableau à l'aide d'une liste d'indices.
Indexation booléenne
L'indexation booléenne permet de sélectionner des éléments selon une condition logique.
Vous pouvez également utiliser cette technique pour modifier certains éléments en fonction
d'une condition.
Exemple :
import numpy as np
# Indexation booléenne
tableau = np.array([5, 12, 19, 32, 47, 58])
sous_tableau_pairs = tableau[(tableau % 2 == 0) & (tableau > 10) & (tableau
< 50)]
print(sous_tableau_pairs) # Affiche [12 32]
37
Module 9 : Numpy (Mathématiques et Statistiques)
Durée : 2 heures
Objectifs :
NumPy fournit une large gamme de fonctions mathématiques qui permettent d'effectuer des
opérations sur des tableaux. Ces fonctions sont optimisées pour la vitesse et l'efficacité dans
la manipulation de données numériques.
Opérations élémentaires
Les opérations élémentaires dans NumPy peuvent être appliquées à un tableau entier ou à des
éléments spécifiques.
import numpy as np
# Addition
print(tableau + 5) # Affiche [15 25 35 45]
# Multiplication
print(tableau * 2) # Affiche [20 40 60 80]
# Division
print(tableau / 10) # Affiche [1. 2. 3. 4.]
NumPy offre des ufuncs, des fonctions universelles, pour appliquer des opérations
mathématiques élémentaires et avancées sur des tableaux.
38
tableau = np.array([1, 4, 9, 16])
racine_carree = np.sqrt(tableau)
print(racine_carree) # Affiche [1. 2. 3. 4.]
Les opérations mathématiques avancées sont essentielles pour effectuer des calculs
scientifiques ou des analyses de données plus poussées.
Produit scalaire :
Le produit scalaire de deux vecteurs se calcule en multipliant les éléments correspondants des
deux vecteurs, puis en additionnant les résultats.
Produit matriciel :
Le produit matriciel se calcule entre deux matrices et respecte les règles de l'algèbre linéaire.
Fonctions trigonométriques
NumPy dispose de fonctions pour réaliser des opérations sur les angles :
39
angles = np.array([0, np.pi/2, np.pi])
sinus = np.sin(angles)
print(sinus) # Affiche [0. 1. 0.]
NumPy propose des fonctions puissantes pour calculer des statistiques descriptives sur des
ensembles de données.
# Moyenne
moyenne = np.mean(tableau)
print(moyenne) # Affiche 3.0
# Médiane
mediane = np.median(tableau)
print(mediane) # Affiche 3.0
# Variance
variance = np.var(tableau)
print(variance) # Affiche 2.0
# Écart-type
ecart_type = np.std(tableau)
print(ecart_type) # Affiche 1.414
somme = np.sum(tableau)
print(somme) # Affiche 10
produit = np.prod(tableau)
print(produit) # Affiche 24
40
• np.min(x) : Minimum des éléments.
• np.max(x) : Maximum des éléments.
• np.ptp(x) : Écart entre le minimum et le maximum (peak-to-peak).
minimum = np.min(tableau)
print(minimum) # Affiche 1
maximum = np.max(tableau)
print(maximum) # Affiche 9
ecart = np.ptp(tableau)
print(ecart) # Affiche 8
Exemple :
import numpy as np
# 1. Statistiques descriptives
tableau = np.random.randint(1, 101, size=10)
print("Tableau :", tableau)
moyenne = np.mean(tableau)
mediane = np.median(tableau)
ecart_type = np.std(tableau)
variance = np.var(tableau)
# 2. Produit matriciel
matrice_1 = np.array([[1, 2], [3, 4]])
matrice_2 = np.array([[5, 6], [7, 8]])
# 3. Calcul trigonométrique
angles = np.linspace(0, 2 * np.pi, 5)
sinus = np.sin(angles)
41
cosinus = np.cos(angles)
tangente = np.tan(angles)
42
Module 10 : Numpy (Broadcasting)
Durée : 2 heures
Objectifs :
Le broadcasting est une fonctionnalité puissante de NumPy qui permet d’appliquer des
opérations arithmétiques sur des tableaux de tailles différentes sans avoir besoin de les
redimensionner manuellement. Il optimise les calculs en éliminant les boucles explicites et
améliore les performances en travaillant directement sur des structures de données
vectorielles.
Définition
Principe du Broadcasting
L'idée principale du broadcasting est que si les formes de deux tableaux sont compatibles,
NumPy ajuste automatiquement la forme des tableaux pour permettre les opérations
élémentaires (addition, multiplication, etc.).
import numpy as np
43
Conditions pour le Broadcasting
1. Leurs formes sont compatibles à partir de la droite (lorsqu'on aligne les dimensions à
partir de la droite).
2. L'une des dimensions est égale à 1, ou bien les deux dimensions sont égales.
• Un tableau de forme (3, 1) peut être broadcasté avec un tableau de forme (1, 4).
Le broadcasting est couramment utilisé pour effectuer des opérations arithmétiques sur des
tableaux de tailles différentes, comme l'addition, la soustraction, la multiplication, etc.
Lorsque vous additionnez ou soustrayez des tableaux de formes compatibles, NumPy ajuste la
plus petite dimension pour permettre l'opération.
# Broadcasting d'addition
resultat = tableau_a + tableau_b
print(resultat)
# Affiche :
# [[11 12 13]
# [21 22 23]
# [31 32 33]]
# Broadcasting de soustraction
resultat = tableau_b - tableau_a
print(resultat)
# Affiche :
# [[ 9 8 7]
# [19 18 17]
# [29 28 27]]
44
tableau_b = np.array([[2], [4], [6]])
# Broadcasting de multiplication
resultat = tableau_a * tableau_b
print(resultat)
# Affiche :
# [[ 2 4 6]
# [ 4 8 12]
# [ 6 12 18]]
# Broadcasting de division
resultat = tableau_b / tableau_a
print(resultat)
# Affiche :
# [[2. 1. 0.66666667]
# [4. 2. 1.33333333]
# [6. 3. 2. ]]
NumPy permet également de broadcast des scalars (valeurs uniques) sur des tableaux. Par
exemple, si vous voulez ajouter une constante à chaque élément d’un tableau, NumPy
applique automatiquement le broadcasting.
Bien que le broadcasting soit extrêmement utile, il présente certaines limites. Par exemple,
deux tableaux ne peuvent pas être broadcastés si leurs formes ne sont pas compatibles selon
les règles définies précédemment.
45
Si vous essayez de broadcast deux tableaux avec des dimensions incompatibles, NumPy
renverra une erreur.
Dans cet exemple, les formes des tableaux (3,) et (2,) ne sont pas compatibles, donc une
erreur sera levée.
Lorsque le broadcasting n'est pas possible directement, il est possible d'utiliser des méthodes
comme np.reshape() ou np.expand_dims() pour ajuster manuellement les dimensions des
tableaux.
Exemple :
import numpy as np
46
# 1. Opérations avec Broadcasting
tableau_1d = np.array([1, 2, 3, 4, 5])
tableau_2d = np.array([[10], [20], [30]])
# Addition
resultat_add = tableau_1d + tableau_2d
print(resultat_add)
# Utilisation de reshape
tableau_a_reshaped = tableau_a.reshape(3, 1)
resultat = tableau_a_reshaped + tableau_b
print(resultat)
47
48