Ficha de revisão: Introduction aux Fonctions et Manipulations NumPy

📋 Plan du Cours

  1. Fonctions en Python
  2. Fonctions lambda anonymes
  3. Bibliothèques externes Python
  4. Importation de bibliothèques
  5. NumPy : création et manipulation
  6. Génération d’arrays NumPy
  7. Manipulations d’arrays
  8. Accès et modification éléments
  9. Génération de nombres aléatoires
  10. Fonctions mathématiques NumPy
  11. Statistiques descriptives

📖 1. Fonctions en Python

🔑 Notions clés & Définitions

Fonction
Selon RODOLPHE GONZALÈS (source) : une fonction est un bloc de code spécialisé pour une tâche spécifique. Elle constitue une unité autonome qui peut être appelée à plusieurs reprises dans un programme pour exécuter une opération précise. La fonction permet de structurer le code en segments modulaires, facilitant la compréhension, la maintenance et la réutilisation.

Argument
D’après RODOLPHE GONZALÈS (source) : un argument est une valeur d’entrée fournie à une fonction lors de son appel. Ces valeurs sont valables uniquement à l’intérieur de la fonction, c’est-à-dire qu’elles ne sont pas accessibles en dehors de celle-ci une fois la fonction exécutée. Les arguments permettent de transmettre des données à la fonction pour qu’elle puisse effectuer sa tâche en utilisant ces données.

Paramètre
RODOLPHE GONZALÈS (source) : les paramètres sont les variables déclarées dans la définition d’une fonction, représentant les valeurs que la fonction attend pour fonctionner. En pratique, ils sont des « espaces réservés » qui seront remplacés par des arguments lors de l’appel de la fonction. La distinction entre paramètre et argument est que le paramètre est la variable dans la définition, tandis que l’argument est la valeur concrète passée lors de l’appel.

Retour (return)
D’après RODOLPHE GONZALÈS (source) : le retour est le résultat ou les résultats qu’une fonction fournit après son exécution, via la commande « return ». La commande « return » permet de renvoyer une ou plusieurs valeurs à l’endroit où la fonction a été appelée, ce qui permet d’utiliser ces résultats dans la suite du programme.

Réutilisabilité
Selon RODOLPHE GONZALÈS (source) : la réutilisabilité d’une fonction désigne sa capacité à être utilisée plusieurs fois dans différents contextes ou programmes sans avoir à la redéfinir. Elle est essentielle pour modulariser le code, réduire la duplication, et faciliter la maintenance en centralisant une opération spécifique dans une seule unité de code.

📝 Points essentiels

Une fonction est un bloc de code spécialisé pour une tâche spécifique. Elle sert à organiser le programme en segments modulaires, ce qui facilite la compréhension et la gestion du code. Les fonctions prennent le plus souvent des valeurs d’entrée, appelées arguments, qui sont des données valables uniquement à l’intérieur de la fonction. Ces arguments sont transmis à la fonction lors de son appel et sont utilisés pour effectuer la tâche assignée. La fonction peut ensuite retourner un ou plusieurs résultats grâce à la commande « return ». Ces résultats sont renvoyés à l’endroit où la fonction a été appelée, permettant ainsi de réutiliser ces résultats dans d’autres parties du programme. La capacité à définir des fonctions réutilisables est fondamentale pour modulariser le code et optimiser son efficacité.

💡 À retenir

Les fonctions en Python sont des blocs de code spécialisés permettant d’effectuer une tâche précise. Leur rôle essentiel est de faciliter la modularité et la réutilisabilité du code, en utilisant des arguments pour transmettre des données et « return » pour renvoyer les résultats.

📖 2. Fonctions lambda anonymes

🔑 Notions clés & Définitions

Fonction lambda
Une fonction lambda est une fonction définie sans utiliser le mot-clé def, ce qui la rend anonyme. Elle est conçue pour effectuer une tâche simple et peut être créée en une seule ligne. Selon RODOLPHE GONZALÈS, une fonction lambda est une fonction particulière qui n’a pas besoin d’être nommée avec def, permettant ainsi une définition rapide et concise.

Fonction anonyme
Une fonction anonyme est une fonction qui n’a pas de nom explicite. Elle est généralement utilisée pour des opérations simples et temporaires, souvent passées directement comme argument à d’autres fonctions. La fonction lambda en est un exemple typique, car elle est créée sans nom et utilisée immédiatement.

Expression lambda
L’expression lambda désigne la syntaxe spécifique permettant de définir une fonction lambda. Elle consiste en le mot-clé lambda, suivi des paramètres, puis d’un double point : et de l’expression qui constitue le corps de la fonction. Par exemple : lambda x: x + 1.

Fonction en une ligne
Une fonction en une ligne est une fonction dont tout le corps est contenu dans une seule instruction. Les fonctions lambda sont un exemple de telles fonctions, permettant d’écrire rapidement des opérations simples sans nécessiter de bloc de code étendu.

📝 Points essentiels

Les fonctions lambda sont définies sans utiliser def, ce qui leur confère le statut d’anonymes. Elles sont particulièrement utiles pour des fonctions simples qui doivent être intégrées directement comme arguments dans d’autres fonctions, évitant ainsi la nécessité de définir une fonction complète avec un nom. Leur principal avantage réside dans leur capacité à écrire des fonctions en une seule ligne, ce qui facilite la concision et la clarté du code. Par exemple, dans le contexte d’un tri, on peut utiliser une lambda pour spécifier la clé de tri : liste.sort(key = lambda x: x[position]). Cette simplicité d’utilisation en fait un outil pratique pour des opérations rapides et efficaces.

💡 À retenir

Les fonctions lambda sont un outil pratique pour écrire rapidement des fonctions simples et anonymes intégrées, permettant d’améliorer la concision et la lisibilité du code en évitant la définition formelle de fonctions complètes.

📖 3. Bibliothèques externes Python

🔑 Notions clés & Définitions

  • RODOLPHE GONZALÈS : voir section 1

Module externe : Composant individuel d’une bibliothèque externe, souvent constitué d’un fichier unique ou d’un ensemble de fichiers regroupés. Un module peut contenir des fonctions, des classes ou des objets, et il est destiné à être importé dans un script Python pour en exploiter les fonctionnalités. La distinction entre bibliothèque et module est que la bibliothèque regroupe plusieurs modules liés entre eux.

Fonctions préprogrammées : Fonctions qui ont été écrites à l’avance dans une bibliothèque ou un module, permettant d’effectuer des opérations complexes ou courantes sans avoir à les coder manuellement. Ces fonctions sont testées, optimisées, et prêtes à l’emploi, ce qui accélère le développement.

Réutilisation de code : Pratique consistant à utiliser des blocs de code déjà existants (comme ceux fournis par des bibliothèques externes) dans différents programmes ou projets, afin d’éviter de réécrire les mêmes fonctionnalités. La réutilisation de code permet d’économiser du temps, d’assurer la fiabilité et de standardiser les opérations.

📝 Points essentiels

Les bibliothèques externes contiennent des fonctions et objets déjà programmés pour réutilisation. Elles offrent des outils spécialisés qui évitent de devoir réécrire des fonctions complexes et fréquemment utilisées. Par exemple, des bibliothèques populaires telles que NumPy, Pandas, GeoPandas ou Matplotlib proposent des fonctionnalités avancées pour la manipulation de données, la visualisation ou la géolocalisation. Ces bibliothèques sont si répandues qu’elles sont souvent pré-installées dans des environnements comme Google Colab, ce qui facilite leur importation et leur utilisation immédiate.

Pour utiliser une bibliothèque externe, il faut l’importer dans le script Python. La syntaxe courante est : import nom, permettant d’accéder à toutes les fonctions et objets de la bibliothèque. Il est aussi possible d’attribuer un alias à la bibliothèque lors de l’importation, par exemple : import nom as alias, ce qui simplifie la référence aux fonctions dans le code, notamment pour des bibliothèques avec des noms longs.

Les bibliothèques de programmation Python jouent un rôle crucial en fournissant des outils spécialisés pour le stockage, la transformation, la visualisation, l’analyse, la modélisation, ou encore la connexion à des bases de données externes. Elles permettent ainsi d’étendre considérablement les capacités de Python sans devoir réinventer la roue à chaque fois.

💡 À retenir

Les bibliothèques externes sont essentielles pour enrichir Python avec des fonctions et objets déjà programmés, facilitant la manipulation de données, la visualisation et la connexion à des systèmes externes. Leur utilisation permet d’étendre rapidement et efficacement les capacités du langage sans avoir à développer toutes les fonctionnalités soi-même.

📖 4. Importation de bibliothèques

🔑 Notions clés & Définitions

Importation
L'importation désigne l'action d'inclure une bibliothèque ou un module dans un programme Python afin d'utiliser ses fonctionnalités. Selon le contenu source, l'importation permet de charger en mémoire une bibliothèque pour accéder à ses fonctions, classes ou variables. Elle se réalise généralement avec la syntaxe import nom ou from nom import fct1, fct2. La bibliothèque ainsi importée devient accessible dans le script, mais elle doit être chargée en mémoire, ce qui peut avoir des implications sur la gestion mémoire du programme.

Alias (aliasing)
L'alias, ou aliasing, consiste à donner un nom raccourci ou différent à une bibliothèque lors de son importation. Cela se fait en utilisant la syntaxe import nom as alias. Par exemple, import numpy as np. L'alias permet de simplifier l'écriture du code en évitant de répéter un nom long ou complexe, tout en conservant l'accès à toutes les fonctionnalités de la bibliothèque. Il est arbitraire, c’est-à-dire que l’utilisateur choisit librement le nom de l’alias.

from-import
La syntaxe from nom import fct1, fct2 permet d'importer uniquement certaines fonctions ou éléments spécifiques d'une bibliothèque, plutôt que la bibliothèque entière. Cela évite de charger tout le module en mémoire et permet d’accéder directement aux fonctions sélectionnées sans préfixe. Par exemple, from math import sqrt, pi importe uniquement la fonction sqrt et la constante pi du module math. Les éléments à importer doivent être séparés par des virgules.

Chargement en mémoire
Le chargement en mémoire désigne le processus par lequel une bibliothèque ou un module est chargé dans la mémoire vive du système lors de son importation. Selon le contenu source, cette opération implique que toutes les fonctions, classes et variables de la bibliothèque deviennent accessibles dans le programme. Cependant, cela peut impacter la gestion mémoire, notamment si la bibliothèque est volumineuse ou si plusieurs modules sont importés simultanément, ce qui peut ralentir ou alourdir l’exécution du programme.

📝 Points essentiels

  • On importe une bibliothèque avec import nom ou import nom as alias. La première méthode charge la bibliothèque sous son nom original, tandis que la seconde permet de lui attribuer un alias pour simplifier le code. Par exemple, import numpy as np est une pratique courante pour utiliser la bibliothèque NumPy de façon plus concise.

  • L'alias permet de raccourcir le nom de la bibliothèque dans le code, ce qui facilite la lecture et la saisie, surtout pour des bibliothèques longues ou fréquemment utilisées. Par exemple, au lieu d’écrire numpy.array(), on peut écrire np.array().

  • On peut importer uniquement certaines fonctions avec la syntaxe from nom import fct1, fct2. Cela limite la charge en mémoire à ce qui est nécessaire, évitant d’importer tout le module. Par exemple, from numpy import array importe uniquement la fonction array de NumPy.

  • L'importation charge la bibliothèque en mémoire, ce qui peut impacter la gestion mémoire. Si la bibliothèque est volumineuse ou si plusieurs modules sont importés, cela peut ralentir l’exécution ou augmenter l’utilisation de la mémoire vive.

💡 À retenir

Maîtriser les différentes méthodes d'importation permet d’optimiser l’utilisation des bibliothèques en Python, en choisissant entre importer tout le module ou uniquement ce qui est nécessaire, tout en utilisant des alias pour simplifier le code et mieux gérer la mémoire.

📖 5. NumPy : création et manipulation

🔑 Notions clés & Définitions

  • NumPy : voir section 3

Array (tableau) : structure centrale de NumPy, un tableau à n dimensions, conçu pour stocker et manipuler des données numériques. Contrairement aux listes Python, les arrays sont optimisés pour les opérations mathématiques et statistiques sur de grandes quantités de données.

Homogénéité des types : propriété essentielle des arrays NumPy, qui stipule que tous les éléments d’un tableau doivent être du même type. Cela permet d’optimiser la mémoire et la vitesse de traitement, en évitant la gestion de types hétérogènes comme dans les listes Python.

Mutable : caractéristique des arrays NumPy, signifiant qu’ils peuvent être modifiés après leur création. On peut changer leur contenu, leur forme ou leur taille, contrairement aux tuples qui sont immuables.

📝 Points essentiels

NumPy est une bibliothèque conçue pour remplacer les listes Python dans le contexte des matrices et des tableaux à n dimensions. La structure centrale de NumPy est l’array, qui est un tableau à n dimensions homogène en type. Cela signifie que, contrairement aux listes Python, qui peuvent contenir des éléments de types variés (hétérogènes), les arrays NumPy doivent contenir uniquement des éléments du même type, ce qui facilite leur traitement et leur stockage.

Les arrays NumPy sont mutables, ce qui permet de modifier leur contenu après leur création. Par exemple, on peut changer une valeur spécifique dans un tableau ou effectuer des opérations de modification en place. Cependant, cette mutabilité ne concerne pas la structure elle-même, mais uniquement le contenu.

En plus de la simple structure de l’array, NumPy fournit une gamme d’outils pour manipuler ces tableaux : sélection d’éléments, insertion, changement de dimensions, concaténation, etc. Ces opérations permettent de transformer facilement la structure des données pour répondre aux besoins spécifiques de chaque calcul ou analyse.

NumPy intègre également un ensemble de fonctions mathématiques et statistiques permettant d’effectuer des calculs directement sur les arrays. Ces fonctions sont optimisées pour la performance, ce qui rend NumPy particulièrement adapté pour traiter de grands volumes de données numériques.

Grâce à ces capacités, NumPy permet d’effectuer une variété d’actions, telles que la création de nouveaux tableaux, la modification de leur contenu, la génération de nombres aléatoires, la réalisation d’opérations d’algèbre linéaire ou de statistiques, le tout de manière performante et efficace.

💡 À retenir

NumPy doit être considéré comme un outil fondamental pour manipuler efficacement des données numériques structurées en tableaux homogènes. Sa structure d’array, sa mutabilité et ses outils intégrés en font une bibliothèque incontournable pour tout traitement numérique performant en Python.

📖 6. Génération d’arrays NumPy

🔑 Notions clés & Définitions

np.array : AUTEUR (date) : convertit une liste Python en array NumPy. Il s’agit d’une fonction permettant de transformer une liste ou une liste imbriquée en un objet de type array, facilitant ainsi la manipulation numérique et la réalisation d’opérations vectorielles ou matricielles.

np.arange : AUTEUR (date) : génère des séquences numériques avec un pas défini. Elle crée un array contenant une série de nombres espacés régulièrement, en spécifiant le début, la fin (exclue) et le pas entre chaque valeur.

np.zeros : AUTEUR (date) : crée un array prérempli de zéros. La taille de cet array est définie par un entier ou une tuple pour un array multidimensionnel.

np.ones : AUTEUR (date) : crée un array prérempli de uns. La taille est également définie par un entier ou une tuple pour un array multidimensionnel.

Array 2D : AUTEUR (date) : un array à deux dimensions, pouvant être créé à partir d’une liste imbriquée ou via des fonctions comme np.zeros((lignes, colonnes)). Il représente une matrice ou une grille de valeurs organisées en lignes et colonnes.

📝 Points essentiels

  • np.array convertit une liste Python en array NumPy : cette opération permet de passer d’une structure de données classique à un format optimisé pour le calcul numérique. Par exemple, une liste simple [1, 2, 3, 4] devient un array NumPy via np.array([1, 2, 3, 4]).

  • np.arange génère des séquences numériques avec un pas défini : elle fonctionne comme la fonction range() en Python, mais retourne un array NumPy. Par exemple, np.arange(2, 10, 2) crée un array [2, 4, 6, 8]. Si le pas n’est pas précisé, il vaut 1 par défaut.

  • np.zeros et np.ones créent des arrays préremplis de 0 ou de 1 : ces fonctions sont utiles pour initialiser des tableaux avant de leur assigner des valeurs. Par exemple, np.zeros(20) crée un array de 20 éléments tous égaux à zéro, tandis que np.ones((3, 4)) crée une matrice 3x4 remplie de uns.

  • Les arrays 2D peuvent être créés à partir de listes imbriquées ou via des fonctions comme np.zeros((lignes, colonnes)). La conversion d’une liste imbriquée en array 2D permet de représenter une matrice, facilitant les opérations matricielles et l’algèbre linéaire.

💡 À retenir

Savoir créer et initialiser différents types d’arrays NumPy, qu’ils soient unidimensionnels ou multidimensionnels, est essentiel pour préparer efficacement les données à manipuler dans des opérations numériques, statistiques ou algébriques.

📖 7. Manipulations d’arrays

🔑 Notions clés & Définitions

reshape
ODOLPHE GONZALÈS (date) : La fonction reshape permet de modifier la forme d’un array sans changer ses données. Elle crée une nouvelle vue de l’array avec une structure différente, en respectant le nombre total d’éléments. Par exemple, un array 1D de 16 éléments peut être transformé en un array 2D de dimensions (4,4). La taille totale doit rester constante, c’est-à-dire que le produit des dimensions doit être égal à la taille initiale.

shape
ODOLPHE GONZALÈS (date) : La propriété shape donne la taille de chaque dimension d’un array. Elle retourne un tuple indiquant le nombre d’éléments le long de chaque axe. Par exemple, pour un array 2D de 3 lignes et 4 colonnes, shape renverra (3, 4). Elle permet de connaître rapidement la structure d’un array.

vstack
ODOLPHE GONZALÈS (date) : La fonction vstack (vertical stack) permet de concaténer verticalement plusieurs arrays. Elle empile les arrays en ajoutant des lignes, ce qui augmente la dimension le long de l’axe 0. Par exemple, si on empile deux arrays de même nombre de colonnes, le résultat sera un array dont le nombre de lignes est la somme des lignes initiales.

hstack
ODOLPHE GONZALÈS (date) : La fonction hstack (horizontal stack) permet de concaténer horizontalement plusieurs arrays. Elle empile les arrays en ajoutant des colonnes, ce qui augmente la dimension le long de l’axe 1. Pour que cette opération soit possible, les arrays doivent avoir le même nombre de lignes.

ndim
ODOLPHE GONZALÈS (date) : La propriété ndim indique le nombre de dimensions d’un array. Par exemple, un array 1D a ndim=1, un array 2D a ndim=2, etc. Elle permet de connaître la complexité structurelle de l’array.

📝 Points essentiels

  • reshape modifie la forme d’un array sans changer ses données. La nouvelle forme doit respecter la contrainte que le produit des dimensions doit être égal à la taille totale de l’array initial. Par exemple, un array de 16 éléments peut être reshaped en (4,4), (2,8), ou (1,16), mais pas en (3,6) car 3×6=18, ce qui ne correspond pas à la taille de l’array.

  • shape donne la taille de chaque dimension d’un array. Elle permet d’accéder rapidement à la structure de l’array pour adapter ou analyser ses dimensions.

  • vstack et hstack facilitent la concaténation d’arrays. vstack empile verticalement, c’est-à-dire qu’il ajoute des lignes, tandis que hstack empile horizontalement, c’est-à-dire qu’il ajoute des colonnes. Ces opérations nécessitent que les dimensions soient compatibles : pour vstack, les arrays doivent avoir le même nombre de colonnes ; pour hstack, le même nombre de lignes.

  • ndim indique le nombre de dimensions d’un array, ce qui est essentiel pour comprendre sa structure et choisir la bonne opération de manipulation.

💡 À retenir

Les opérations de reshape, shape, vstack, hstack et ndim permettent d’adapter et de combiner des arrays selon les besoins analytiques, en modifiant leur forme ou leur organisation sans altérer leurs données. Ces manipulations sont fondamentales pour préparer les données dans différents contextes de traitement.

📖 8. Accès et modification éléments

🔑 Notions clés & Définitions

Indexation 1D
L'indexation 1D consiste à accéder à un seul élément dans un tableau ou array à une seule dimension en utilisant un seul indice. Par exemple, dans un array a = np.array([0,1,2,3,4]), l’accès à l’élément à l’indice 3 se fait par a[3], ce qui renvoie la valeur 3. La numérotation des indices commence généralement à 0.

Indexation 2D
L'indexation 2D permet d’accéder à un élément ou à un sous-ensemble d’un tableau à deux dimensions, en utilisant deux indices séparés par une virgule, chacun correspondant à une dimension. Par exemple, pour un array a de forme (4,4), l’accès à un élément spécifique se fait par a[i,j], où i est l’indice de la ligne et j celui de la colonne. La notation peut aussi inclure des slices pour accéder à des lignes ou colonnes entières.

dtype
Le dtype (type de données) indique le type des éléments contenus dans un array. Par exemple, int, float, complex, etc. La connaissance du dtype permet de comprendre la nature des données manipulées et d’assurer la cohérence lors des opérations ou modifications.

Slicing
Le slicing est une technique pour accéder à une partie d’un array en spécifiant une plage d’indices. En 2D, on peut utiliser la syntaxe a[start:stop:step] pour sélectionner une sous-partie. Par exemple, a[1,:] permet d’accéder à la ligne 1 entière, tandis que a[:,2] donne la colonne 2 entière. Le slicing permet donc de sélectionner des lignes, colonnes ou sous-ensembles précis.

Modification par index
Il est possible de modifier directement un ou plusieurs éléments d’un array en utilisant leur position. Par exemple, a[2] = 10 modifie l’élément à l’indice 2 dans un array 1D, et a[1,3] = 5 modifie l’élément à la ligne 1, colonne 3 dans un array 2D. La modification se fait en assignant une nouvelle valeur à l’élément ciblé.

📝 Points essentiels

On accède aux éléments d'un array avec une seule paire de crochets, même multidimensionnel.
Que l’array soit en 1D ou en 2D, l’accès à un élément se fait toujours en utilisant une seule paire de crochets. Pour un array 1D, on utilise un seul indice : a[index]. Pour un array 2D, on utilise deux indices séparés par une virgule : a[i,j]. Par exemple, dans un array a de forme (4,4), a[2,3] donne l’élément situé à la troisième colonne de la deuxième ligne.

dtype indique le type des éléments dans un array.
Le dtype permet de connaître le type de données stocké dans l’array, comme par exemple int, float, ou autres. Il est accessible via array.dtype. Cette information est essentielle pour comprendre la nature des données et assurer la compatibilité lors des opérations.

On peut accéder à une ligne ou colonne entière via slicing (ex : a[1,:], a[:,2]).
Le slicing permet de sélectionner des sous-ensembles précis. Par exemple, a[1,:] renvoie toute la ligne 1, tandis que a[:,2] renvoie toute la colonne 2. Ces opérations facilitent la manipulation de sous-ensembles dans un array multidimensionnel.

Les éléments peuvent être modifiés directement par leur position dans l'array.
Une fois qu’un élément est accessible, il peut être modifié en lui assignant une nouvelle valeur. Par exemple, a[2] = 7 modifie l’élément à l’indice 2 dans un array 1D, et a[1,3] = 5 modifie l’élément à la ligne 1, colonne 3 dans un array 2D. La modification est immédiate et directe.

💡 À retenir

Maîtriser l’accès et la modification ciblée des éléments dans les arrays permet de manipuler précisément les données, que ce soit pour extraire des sous-ensembles ou pour ajuster des valeurs spécifiques. La simplicité de l’utilisation d’une seule paire de crochets, même en multidimensionnel, facilite cette manipulation.

📖 9. Génération de nombres aléatoires

🔑 Notions clés & Définitions

np.random.rand : np.random.rand est une fonction de la bibliothèque NumPy qui permet de générer des nombres réels aléatoires suivant une distribution uniforme sur l’intervalle [0, 1). Elle prend en argument une ou plusieurs dimensions, et retourne un tableau de nombres flottants. Par exemple, np.random.rand(3,2) génère un tableau 3x2 de nombres aléatoires uniformément distribués entre 0 et 1.

np.random.randn : np.random.randn est une fonction de NumPy qui génère des nombres réels selon une distribution normale (ou gaussienne) standard, c’est-à-dire une distribution avec une moyenne de 0 et un écart-type de 1. Elle accepte en argument une ou plusieurs dimensions et retourne un tableau de nombres flottants suivant cette distribution. Par exemple, np.random.randn(4) produit un tableau de 4 nombres selon une distribution normale.

randint : La fonction randint de NumPy permet de générer des entiers aléatoires selon une distribution uniforme. Elle prend en paramètres la borne inférieure (incluse), la borne supérieure (exclue), et éventuellement la taille du tableau à générer. Par exemple, np.random.randint(1, 10, size=5) produit un tableau de 5 entiers aléatoires compris entre 1 et 9, avec une distribution uniforme.

📝 Points essentiels

  • np.random.rand génère des nombres réels aléatoires uniformément distribués. La fonction est utilisée pour simuler des données où chaque valeur dans l’intervalle [0, 1) a une probabilité égale d’apparaître. Elle accepte des arguments indiquant la forme du tableau à générer, par exemple np.random.rand(3, 4) pour un tableau 3 lignes et 4 colonnes. C’est un outil essentiel pour la simulation de données aléatoires uniformes dans des modèles statistiques ou des expérimentations numériques.

  • np.random.randn génère des nombres réels suivant une distribution normale, centrée sur zéro avec un écart-type de 1. Elle est particulièrement utile pour modéliser des phénomènes naturels ou financiers où la distribution normale est une approximation courante. La sortie est un tableau de la même dimension que celle spécifiée en argument, par exemple np.random.randn(5) pour un vecteur de 5 valeurs. Elle permet de simuler des erreurs ou des fluctuations aléatoires selon une loi gaussienne.

  • randint génère des entiers aléatoires selon une distribution uniforme. Elle est adaptée pour simuler des tirages au sort, des indices ou des catégories discrètes. La fonction nécessite la définition de la borne inférieure (incluse) et de la borne supérieure (exclue), ainsi que la taille du tableau souhaité. Par exemple, np.random.randint(0, 100, size=10) produit un tableau de 10 entiers compris entre 0 et 99, avec une probabilité égale pour chaque valeur. Elle est essentielle pour la génération de données discrètes ou pour des simulations nécessitant des valeurs entières.

💡 À retenir

Les fonctions np.random.rand, np.random.randn et randint offrent une gamme complète pour générer des nombres aléatoires selon différentes lois de distribution, permettant de simuler et modéliser efficacement des données statistiques variées dans NumPy. Leur utilisation facilite la création de jeux de données pour des expérimentations, des tests ou des modèles probabilistes.

📖 10. Fonctions mathématiques NumPy

🔑 Notions clés & Définitions

  • RODOLPHE GONZALÈS : voir section 1

Algèbre linéaire : Branche des mathématiques qui étudie les vecteurs, matrices, et opérations associées telles que le produit matriciel, l’inversion de matrices, et le calcul des valeurs propres. NumPy inclut des fonctions pour réaliser ces opérations de manière optimisée. RODOLPHE GONZALÈS (date) : mentionne que ces fonctionnalités sont intégrées dans la bibliothèque pour faciliter le traitement avancé des matrices.

Produit matriciel : Opération qui consiste à multiplier deux matrices selon la règle spécifique de l’algèbre linéaire, où chaque élément du résultat est la somme des produits des éléments de la ligne d’une matrice par ceux de la colonne de l’autre. NumPy propose une fonction dédiée pour effectuer ce calcul rapidement. RODOLPHE GONZALÈS (date) : précise que cette opération est essentielle pour de nombreux calculs en algèbre linéaire.

Inversion de matrice : Processus qui consiste à trouver une matrice inverse, telle que le produit de la matrice initiale par son inverse donne la matrice identité. NumPy fournit des fonctions pour calculer cette inversion, sous réserve que la matrice soit inversible. RODOLPHE GONZALÈS (date) : indique que cette opération est cruciale pour résoudre des systèmes d’équations linéaires.

Valeurs propres : Les valeurs propres d’une matrice sont des scalaires associées à des vecteurs propres, tels que la multiplication de la matrice par un vecteur propre donne ce vecteur multiplié par la valeur propre. NumPy permet de calculer ces valeurs dans le cadre de l’algèbre linéaire. RODOLPHE GONZALÈS (date) : souligne leur importance dans l’analyse matricielle.

📝 Points essentiels

NumPy permet d’effectuer des opérations mathématiques élément par élément sur les arrays, ce qui signifie que chaque opération est appliquée individuellement à chaque élément sans tenir compte de la structure matricielle. Par exemple, si l’on additionne deux arrays, chaque élément correspondant est additionné séparément, ce qui facilite le traitement de grands ensembles de données.

Il inclut également des fonctions d’algèbre linéaire avancées, telles que le produit matriciel, l’inversion de matrice, et le calcul des valeurs propres. Ces opérations sont essentielles pour traiter des matrices dans des contextes scientifiques, d’ingénierie ou statistiques, et sont optimisées pour la performance, permettant de réaliser rapidement des calculs complexes sur de grandes matrices.

Les calculs effectués par NumPy sont conçus pour être performants, exploitant des optimisations internes pour traiter efficacement des matrices de grande taille. Cela permet aux utilisateurs de réaliser des opérations mathématiques avancées sans sacrifier la vitesse, même sur des ensembles de données volumineux.

💡 À retenir

Exploiter les capacités mathématiques avancées de NumPy permet d’effectuer rapidement et efficacement des calculs complexes sur matrices, notamment en utilisant des opérations élément par élément et des fonctions d’algèbre linéaire optimisées.

📖 11. Statistiques descriptives

🔑 Notions clés & Définitions

Minimum : La valeur la plus petite d’un tableau ou d’un array. Elle permet d’identifier le point inférieur de la distribution des données. Par exemple, si l’on a un array de températures, le minimum correspond à la température la plus basse enregistrée. La fonction NumPy associée est np.min().

Maximum : La valeur la plus grande d’un tableau ou d’un array. Elle indique le point supérieur de la distribution des données. Par exemple, dans un tableau de scores, le maximum est le score le plus élevé. La fonction NumPy correspondante est np.max().

Moyenne : La somme de toutes les valeurs d’un tableau divisée par le nombre total de ces valeurs. Elle donne une idée de la tendance centrale des données. Par exemple, la moyenne des notes d’un examen permet de connaître la performance moyenne. La fonction NumPy pour la calculer est np.mean().

Médiane : La valeur qui partage un ensemble de données en deux parties égales, lorsque celles-ci sont triées dans l’ordre croissant ou décroissant. La médiane est moins sensible aux valeurs extrêmes que la moyenne. Par exemple, dans une distribution de revenus, la médiane indique le revenu central. La fonction NumPy correspondante est np.median().

Centiles : Les valeurs qui divisent une distribution en cent parties égales. Chaque centile indique la position d’une donnée par rapport à l’ensemble, permettant d’analyser la dispersion et la distribution des données. Par exemple, le 25e centile (ou premier quartile) correspond à la valeur en dessous de laquelle se trouvent 25 % des données. La fonction NumPy pour calculer un centile spécifique est np.percentile().

📝 Points essentiels

NumPy fournit des fonctions pour calculer le minimum et le maximum d’un array, que celui-ci soit en 1D ou en 2D. La fonction np.min() permet d’obtenir la valeur la plus petite, tandis que np.max() donne la valeur la plus grande. Ces fonctions sont essentielles pour résumer rapidement l’étendue des données.

Il est également très simple de calculer la moyenne et la médiane avec NumPy. La moyenne, calculée via np.mean(), donne une idée de la valeur centrale en tenant compte de toutes les données. La médiane, obtenue avec np.median(), est particulièrement utile lorsque la distribution est asymétrique ou contient des valeurs extrêmes, car elle n’est pas influencée par ces dernières.

Les centiles sont des outils précieux pour analyser la distribution des données. En utilisant np.percentile(), on peut déterminer, par exemple, le 10e, 50e ou 90e centile, ce qui permet de comprendre la dispersion et la concentration des valeurs dans un ensemble. Ces mesures facilitent la compréhension des caractéristiques principales des données en complément des autres statistiques.

💡 À retenir

Utiliser les fonctions statistiques de NumPy permet de résumer efficacement les principales caractéristiques d’un ensemble de données, telles que l’étendue, la tendance centrale et la dispersion, facilitant ainsi leur analyse et leur interprétation.

📊 Tableaux de Synthèse

ThèmeConcepts ClésDétailsAuteur/Source
Fonctions en PythonFonctionBloc de code pour une tâche spécifique, modulable, réutilisableRODOLPHE GONZALÈS
ArgumentValeur d’entrée transmise lors de l’appel, valable uniquement à l’intérieur de la fonctionRODOLPHE GONZALÈS
ParamètreVariable déclarée dans la définition, représentant une valeur attendue par la fonctionRODOLPHE GONZALÈS
Retour (return)Résultat renvoyé par la fonction après exécutionRODOLPHE GONZALÈS
RéutilisabilitéCapacité d’utiliser une fonction plusieurs fois dans différents contextesRODOLPHE GONZALÈS
Fonctions lambdaFonction lambdaAnonyme, définie en une ligne avec lambda, sans nom expliciteRODOLPHE GONZALÈS
Fonction anonymeFonction sans nom utilisée pour opérations simples et temporairesRODOLPHE GONZALÈS
Expression lambdaSyntaxe lambda + paramètres + : + expression, exemple : lambda x: x+1RODOLPHE GONZALÈS
Bibliothèques externes PythonModule externeFichier ou ensemble de fichiers regroupant des fonctionnalités, importé dans un scriptRODOLPHE GONZALÈS
Fonctions préprogramméesFonctions déjà écrites et optimisées, disponibles dans les bibliothèques pour éviter la réécritureRODOLPHE GONZALÈS
Réutilisation de codeUtilisation de blocs existants pour gagner du temps et assurer la fiabilité du codeRODOLPHE GONZALÈS

⚠️ Pièges & Confusions Fréquentes

  1. Confondre argument et paramètre : le paramètre est la variable dans la définition, l’argument la valeur passée lors de l’appel.
  2. Oublier que return peut renvoyer plusieurs valeurs sous forme de tuple.
  3. Utiliser une fonction lambda pour des opérations complexes ; elle est adaptée uniquement aux opérations simples.
  4. Ne pas importer correctement une bibliothèque externe avant utilisation (import nom).
  5. Confondre module et bibliothèque : une bibliothèque regroupe plusieurs modules.
  6. Tenter d’utiliser une fonction lambda avec plusieurs instructions ; elle ne doit contenir qu’une seule expression.
  7. Oublier que les arguments sont valables uniquement à l’intérieur de la fonction.

✅ Checklist Examen

  1. Connaître la définition d’une fonction selon RODOLPHE GONZALÈS et ses rôles principaux.
  2. Savoir faire la différence entre argument et paramètre.
  3. Expliquer le rôle de return dans une fonction Python.
  4. Comprendre le concept de réutilisabilité d’une fonction.
  5. Définir ce qu’est une fonction lambda et ses avantages.
  6. Savoir écrire une fonction lambda simple avec syntaxe lambda.
  7. Identifier les cas où utiliser une fonction lambda plutôt qu’une fonction classique.
  8. Connaître la différence entre module externe et bibliothèque en Python.
  9. Savoir importer une bibliothèque externe avec import ou import as.
  10. Connaître quelques bibliothèques externes courantes (ex : NumPy, Pandas) et leur utilité.
  11. Comprendre le rôle des fonctions préprogrammées dans les bibliothèques externes.
  12. Maîtriser la syntaxe pour générer et manipuler des arrays NumPy (création, accès, modification).
  13. Connaître les principales fonctions mathématiques NumPy (ex : sin, cos, exp).
  14. Savoir générer des nombres aléatoires avec NumPy (np.random) et leur utilisation.
  15. Être capable d’effectuer des statistiques descriptives simples avec NumPy (moyenne, médiane, variance).

Teste seu conhecimento

Teste seu conhecimento sobre Introduction aux Fonctions et Manipulations NumPy com 11 perguntas de múltipla escolha com correções detalhadas.

1. Comment Rodolphe Gonzalès définit-il une fonction en Python ?

2. Quelle est la caractéristique principale d'une fonction lambda en Python ?

Faça o quiz →

Revisar com flashcards

Memorize os conceitos chave de Introduction aux Fonctions et Manipulations NumPy com 22 flashcards interativos.

Fonction en Python — définition ?

Bloc de code pour une tâche spécifique, réutilisable.

Argument — rôle ?

Valeur d’entrée transmise à une fonction.

Paramètre — différence ?

Variable déclarée dans la définition, attendu par la fonction.

Veja os flashcards →

Similar courses

Crie suas próprias fichas de revisão

Importe seu curso e a IA gera fichas, quizzes e flashcards em 30 segundos.

Gerador de fichas