Introduction
Ce laboratoire couvrira certaines des fonctionnalités avancées de NumPy, notamment l'algèbre linéaire, la génération de nombres aléatoires et les tableaux masqués.
Algèbre linéaire avec NumPy
NumPy dispose d'un ensemble complet de fonctions pour les opérations d'algèbre linéaire. Voici quelques exemples :
Ouvrir l'interpréteur Python
Ouvrez l'interpréteur Python en tapant la commande suivante dans le terminal.
python3
Produit scalaire
Le produit scalaire de deux tableaux peut être calculé à l'aide de la fonction np.dot(). Le produit scalaire de deux tableaux A et B est défini comme la somme du produit des éléments correspondants de A et B.
import numpy as np
## créer deux tableaux
a = np.array([1, 2])
b = np.array([3, 4])
## calculer le produit scalaire
dot_product = np.dot(a, b)
print(dot_product) ## Sortie : 11
Multiplication de matrices
La multiplication de matrices peut être effectuée à l'aide de l'opérateur @ ou de la fonction np.matmul().
Veuillez lire attentivement les exemples suivants.
## créer deux matrices
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## multiplication de matrices
C = A @ B
print(C) ## Sortie : [[19 22], [43 50]]
Vous pouvez également obtenir les résultats d'une autre manière.
## créer deux matrices
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## multiplication de matrices
C = np.matmul(A,B)
print(C) ## Sortie : [[19 22], [43 50]]
Déterminant et inverse
Le déterminant et l'inverse d'une matrice peuvent être calculés à l'aide des fonctions np.linalg.det() et np.linalg.inv() respectivement.
## créer une matrice
A = np.array([[1, 2], [3, 4]])
## calculer le déterminant et l'inverse
det_A = np.linalg.det(A)
inv_A = np.linalg.inv(A)
print(det_A) ## Sortie : -2.0
print(inv_A) ## Sortie : [[-2. 1. ], [ 1.5 -0.5]]
Exercice
Maintenant, c'est à vous de construire deux tableaux et d'utiliser la fonction np.dot() pour calculer le produit scalaire. Utilisez @ ou np.matmul() pour calculer la multiplication de matrices et utilisez les fonctions np.linalg.det() et np.linalg.inv() pour calculer le déterminant de la matrice et la matrice inverse.
Génération de nombres aléatoires
NumPy fournit plusieurs fonctions pour générer des nombres aléatoires. Voici quelques exemples :
Génération de nombres aléatoires
La fonction np.random.rand() peut être utilisée pour générer des nombres aléatoires compris entre 0 et 1.
## générer une matrice 2x2 de nombres aléatoires
a = np.random.rand(2, 2)
print(a) ## Sortie : [[0.43584547 0.37752558], [0.08936734 0.65526767]]
Génération d'entiers aléatoires
La fonction np.random.randint() peut être utilisée pour générer des entiers aléatoires entre deux nombres spécifiés.
## générer un tableau d'entiers aléatoires entre 1 et 10
a = np.random.randint(1, 10, size=(3, 3))
print(a) ## Sortie : [[8 7 3], [3 3 7], [8 8 7]]
Génération d'une distribution normale
La fonction np.random.normal() peut être utilisée pour générer des nombres à partir d'une distribution normale.
## générer un tableau de nombres à partir d'une distribution normale
a = np.random.normal(0, 1, size=(2, 2))
print(a) ## Sortie : [[ 1.28418331 -0.90564647], [-0.76477896 1.69903421]]
Exercice
Maintenant, suivez les fonctions ci-dessus pour compléter la génération de nombres aléatoires, d'entiers aléatoires et de la distribution normale. Veuillez compléter cet exercice.
Tableaux masqués
Les tableaux masqués sont des tableaux auxquels est attaché un masque. Le masque est un tableau de valeurs booléennes qui indiquent quels éléments du tableau doivent être masqués (cachés). NumPy fournit le module np.ma pour travailler avec les tableaux masqués.
Création d'un tableau masqué
Un tableau masqué peut être créé à l'aide de la fonction np.ma.masked_array().
## créer un tableau avec certains valeurs masquées
a = np.ma.masked_array([1, 2, 3, 4], mask=[True, False, False, True])
print(a) ## Sortie : [-- 2 3 --]
Application d'un masque
Un masque peut être appliqué à un tableau à l'aide de la fonction np.ma.masked_where().
## créer un tableau
a = np.array([1, 2, 3, 4])
## créer un masque
mask = a > 2
## appliquer le masque
b = np.ma.masked_where(mask, a)
print(b) ## Sortie : [1 2 -- --]
Masquage des valeurs invalides
Les tableaux masqués peuvent être utilisés pour gérer les valeurs invalides telles que les NaN (not a number) ou les infinis.
## créer un tableau avec certaines valeurs invalides
a = np.array([1, np.nan, np.inf, 4])
## créer un tableau masqué
b = np.ma.masked_invalid(a)
print(b) ## Sortie : [1.0 -- -- 4.0]
Exercice
Maintenant, veuillez utiliser le module np.ma fourni par numoy pour compléter la création du tableau masqué. En même temps, utilisez la fonction np.ma.masked_where() pour appliquer le masque au tableau et enfin utilisez np.ma.masked_invalid() pour gérer les valeurs invalides. Veuillez compléter cet exercice.
Résumé
Félicitations pour avoir terminé cette expérience!
Dans ce tutoriel, nous avons abordé certains sujets avancés de NumPy, notamment l'algèbre linéaire, la génération de nombres aléatoires et les tableaux masqués. Ces fonctionnalités sont utiles pour de nombreuses applications, y compris l'analyse de données et le calcul scientifique.
Continuez à travailler dur!



