Thèmes avancés de NumPy

PythonBeginner
Pratiquer maintenant

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.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 96%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

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!