Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🔢
Intermediaire 20 min NumPy

NumPy : calcul scientifique

Pourquoi NumPy : calcul scientifique ?

NumPy est une bibliothèque essentielle pour les calculs scientifiques en Python. Elle offre des performances optimisées et une structure de données efficace, ce qui est crucial pour traiter des grandes quantités de données. Un cas d'usage concret est la manipulation de matrices et vecteurs pour l'apprentissage automatique ou le traitement d'image.

Prerequis

  • Connaissance de base en Python
  • Compréhension des structures de données (listes, tuples)
  • Installation de Python 3.x

Pour installer NumPy :

pip install numpy

Concepts fondamentaux

Array NumPy

Un array est la structure de données fondamentale de NumPy. Il permet de stocker et d'opérer sur des ensembles de données homogènes.

import numpy as np

## Création d'un array à partir d'une liste Python
array_1d = np.array([1, 2, 3, 4, 5])
print(array_1d)  # Output: [1 2 3 4 5]

## Création d'un array multidimensionnel
array_2d = np.array([[1, 2], [3, 4]])
print(array_2d)  # Output: [[1 2]
                  #          [3 4]]

Opérations sur les arrays

NumPy permet d'effectuer des opérations vectorielles et matricielles de manière efficace.

## Addition de deux arrays
array_1 = np.array([1, 2, 3])
array_2 = np.array([4, 5, 6])
result = array_1 + array_2
print(result)  # Output: [5 7 9]

## Multiplication par un scalaire
scaled_array = array_1 * 2
print(scaled_array)  # Output: [2 4 6]

Fonctions utiles

NumPy offre de nombreuses fonctions pratiques pour manipuler les arrays.

## Génération d'un array de zéros
zeros_array = np.zeros((3, 3))
print(zeros_array)  # Output: [[0. 0. 0.]
                     #          [0. 0. 0.]
                     #          [0. 0. 0.]]

## Génération d'un array de nombres aléatoires
random_array = np.random.rand(2, 3)
print(random_array)  # Output: [[0.48654776 0.18159352 0.3278202 ]
                     #          [0.64768847 0.40082474 0.8525379 ]]

Mise en pratique : projet fil rouge

Étape 1 : Création du projet

Créer un nouveau répertoire pour votre projet et initialisez-le avec git.

mkdir numpy_project
cd numpy_project
git init

Étape 2 : Création des fichiers

Créez les fichiers suivants :

  • main.py
  • utils.py

Étape 3 : Installation des dépendances

Ajoutez NumPy à votre environnement virtuel et installez-le.

pip install numpy

Étape 4 : Implémentation de la fonctionnalité

Dans utils.py, implémentez une fonction pour calculer le produit matriciel de deux arrays.

## utils.py

import numpy as np

def matrix_multiply(matrix1, matrix2):
    """
    Multiplie deux matrices et retourne le résultat.
    
    :param matrix1: La première matrice (array 2D)
    :param matrix2: La deuxième matrice (array 2D)
    :return: Le produit matriciel des deux matrices
    """
    # Vérifiez si la multiplication est possible
    if matrix1.shape[1] != matrix2.shape[0]:
        raise ValueError("Le nombre de colonnes de la première matrice doit être égal au nombre de lignes de la deuxième matrice.")
    
    # Effectuez la multiplication matricielle
    result = np.dot(matrix1, matrix2)
    return result

## Exemple d'utilisation
if __name__ == "__main__":
    A = np.array([[1, 2], [3, 4]])
    B = np.array([[5, 6], [7, 8]])
    
    C = matrix_multiply(A, B)
    print("Produit matriciel :")
    print(C)

Étape 5 : Exécution du code

Exécutez le script principal pour vérifier que la fonctionnalité est correctement implémentée.

python main.py

Erreurs frequentes et debugging

Erreur 1 : Dimensions incompatibles

## ❌ Mauvais
A = np.array([[1, 2], [3, 4]])
B = np.array([5, 6])

try:
    result = A + B
except ValueError as e:
    print(e)  # Output: operands could not be broadcast together with shapes (2,2) (2,)

Correction :

## ✅ Correct
A = np.array([[1, 2], [3, 4]])
B = np.array([5, 6]).reshape(1, -1)

result = A + B
print(result)  # Output: [[6 8]
                #          [8 10]]

Erreur 2 : Vérification de la forme

## ❌ Mauvais
A = np.array([[1, 2], [3, 4]])
B = np.array([5, 6])

if A.shape[1] != B.shape[0]:
    raise ValueError("Le nombre de colonnes de la première matrice doit être égal au nombre de lignes de la deuxième matrice.")

Correction :

## ✅ Correct
A = np.array([[1, 2], [3, 4]])
B = np.array([5, 6]).reshape(1, -1)

if A.shape[1] != B.shape[0]:
    raise ValueError("Le nombre de colonnes de la première matrice doit être égal au nombre de lignes de la deuxième matrice.")

Erreur 3 : Multiplication inexistante

## ❌ Mauvais
A = np.array([[1, 2], [3, 4]])
B = np.array([5, 6])

try:
    result = np.dot(A, B)
except ValueError as e:
    print(e)  # Output: shapes (2,2) and (2,) not aligned: 2 (dim 0) != 1 (dim 0)

Correction :

## ✅ Correct
A = np.array([[1, 2], [3, 4]])
B = np.array([5, 6]).reshape(1, -1)

result = np.dot(A, B)
print(result)  # Output: [[19]]

Pour aller plus loin

1. Manipulation des arrays avancée

Apprenez à manipuler les arrays avec des fonctions comme np.reshape, np.transpose, et np.append.

2. Optimisation avec numexpr

Améliorez les performances de vos opérations sur les arrays en utilisant la bibliothèque numexpr.

3. Utilisation avec pandas

Intégrez NumPy dans votre travail quotidien avec l'utilisation de pandas pour le traitement de données.

Défi pratique

Implémentez une fonction qui calcule la somme des éléments d'une matrice carrée en utilisant les fonctions de NumPy.

def sum_matrix_elements(matrix):
    """
    Calcule la somme des éléments d'une matrice carrée.
    
    :param matrix: La matrice carrée (array 2D)
    :return: La somme des éléments de la matrice
    """
    # Vérifiez si la matrice est carrée
    if matrix.shape[0] != matrix.shape[1]:
        raise ValueError("La matrice doit être carrée.")
    
    # Calculez la somme des éléments
    total_sum = np.sum(matrix)
    return total_sum

## Exemple d'utilisation
if __name__ == "__main__":
    C = np.array([[1, 2], [3, 4]])
    result = sum_matrix_elements(C)
    print("Somme des éléments de la matrice :")
    print(result)  # Output: 10

Faites preuve d'initiative et explorez ces sujets pour approfondir vos compétences en NumPy.

Besoin d'aide sur NumPy ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Qu'est-ce que NumPy?
NumPy est une bibliothèque scientifique pour Python qui permet des opérations sur les tableaux multidimensionnels et fait partie de la base de nombreux autres packages scientifiques en Python.
Comment créer un tableau NumPy avec des valeurs spécifiques?
Pour créer un tableau NumPy, vous pouvez utiliser diverses fonctions comme `numpy.array()`, qui prend une liste ou une autre séquence comme argument. Par exemple : `import numpy as np; arr = np.array([1, 2, 3, 4])`.
Quelle est la différence entre un objet NumPy et une structure de données Python standard?
Un objet NumPy offre des opérations optimisées pour les tableaux multidimensionnels et utilise moins de mémoire que les structures de données Python standards comme les listes. Les opérations sur les tableaux NumPy sont généralement beaucoup plus rapides.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.