0Pricing
Learn AI with Python · Leçon

Diffusion et opérations vectorisées

Comprendre la diffusion, les opérations élément par élément et l’évitement des boucles grâce à la vectorisation.

Diffusion et opérations vectorisées est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.

Pourquoi vectoriser ?

NumPy traite des tableaux entiers à la vitesse du C. Remplacer les boucles Python par des expressions de tableaux, ce qu’on appelle la vectorisation, est souvent 10 à 100 fois plus rapide.

Opérations élément par élément

Les opérateurs arithmétiques s’appliquent élément par élément lorsque les formes correspondent. Aucune boucle n’est nécessaire.

import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b)   # [11 22 33]
print(a * b)   # [10 40 90]

Diffusion d’un scalaire

Une opération entre un tableau et un scalaire applique le scalaire à chaque élément. Le scalaire est « diffusé » sur tout le tableau.

a = np.array([1, 2, 3, 4])
print(a * 10)   # [10 20 30 40]
print(a + 100)  # [101 102 103 104]

Qu’est-ce que la diffusion ?

La diffusion permet à NumPy de combiner des tableaux de formes différentes en étirant virtuellement le plus petit, sans copier la mémoire.

La règle de diffusion

Comparez les formes en partant de la dimension finale (la plus à droite). Deux dimensions sont compatibles lorsqu’elles sont égales ou lorsque l’une d’elles vaut 1. Une dimension de taille 1 s’étire pour correspondre à l’autre.

# (3, 4) with (4,)   -> compatible (trailing 4 matches)
# (3, 4) with (3, 1)  -> compatible (1 stretches to 4)
# (3, 4) with (3,)    -> ERROR (trailing 4 vs 3)

Diffusion d’un vecteur ligne

Un tableau 1D dont la longueur est égale au nombre de colonnes s’ajoute à chaque ligne.

m = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)
# [[11 22 33]
#  [14 25 36]]

Diffusion d’un vecteur colonne

Remodelez un vecteur en colonne (forme (n,1)) afin qu’il se diffuse sur les colonnes plutôt que sur les lignes.

col = np.array([[100], [200]])   # shape (2, 1)
print(m + col)
# [[101 102 103]
#  [204 205 206]]

Centrage des données (utilisation réelle)

Soustraire la moyenne de chaque colonne centre chaque caractéristique, une étape courante de prétraitement réalisée en une seule ligne exploitant la diffusion.

data = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
centered = data - data.mean(axis=0)
print(centered)
# columns now have mean 0

Fonctions universelles (ufuncs)

NumPy fournit des fonctions mathématiques rapides, élément par élément, appelées fonctions universelles : np.sqrt, np.log, np.exp, etc. Elles sont vectorisées et compatibles avec la diffusion.

a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a))   # [1. 2. 3. 4.]
print(np.log(a))    # natural log of each element
print(np.exp([0, 1]))  # [1.        2.71828183]

Vitesse : boucle ou vectorisation

Le même calcul est considérablement plus rapide lorsqu’il est vectorisé. Utilisez %timeit pour mesurer la différence sur un million d’éléments.

big = np.arange(1000000, dtype=float)
# Slow Python loop:
# %timeit [x*x for x in big]
# Fast vectorized:
%timeit big * big   # typically tens of times faster

Combinaison de vectorisations

Enchaînez les fonctions universelles et les opérations arithmétiques pour exprimer directement les formules. Cela calcule une courbe gaussienne sans aucune boucle.

x = np.linspace(-3, 3, 7)
y = np.exp(-x**2 / 2)
print(np.round(y, 3))

Vérification rapide

Testez votre compréhension de la diffusion.

Récapitulatif

Principes essentiels de la vectorisation :

  • Les opérations élément par élément évitent les boucles Python et s’exécutent à la vitesse du C
  • La diffusion aligne les dimensions finales ; les tailles doivent correspondre ou valoir 1
  • Utilisez des vecteurs colonnes (n,1) pour diffuser sur les colonnes
  • Fonctions universelles : np.sqrt, np.log, np.exp
  • Centrez les données avec data - data.mean(axis=0)

Questions Fréquemment Posées

La leçon « Diffusion et opérations vectorisées » est-elle gratuite ?

Oui — le texte complet de « Diffusion et opérations vectorisées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Diffusion et opérations vectorisées » ?

Comprendre la diffusion, les opérations élément par élément et l’évitement des boucles grâce à la vectorisation. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn AI with Python ?

Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Diffusion et opérations vectorisées » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?

Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Création et propriétés des tableaux
  2. Indexation, découpage et indexation avancée
  3. Diffusion et opérations vectorisées
  4. Algèbre linéaire avec NumPy
← Retour à Learn AI with Python