Tutoriel Python Numpy (avec Jupyter et Colab)

Ce tutoriel a été initialement contribué par Justin Johnson.

Nous utiliserons le langage de programmation Python pour tous les devoirs de ce cours.Python est un excellent langage de programmation À Usage général à lui seul, mais avec l’aide de quelques bibliothèques populaires (numpy, scipy, matplotlib), il devient un environnement puissant pour l’informatique scientifique.,

Nous nous attendons à ce que beaucoup d’entre vous aient une certaine expérience avec Python et numpy;pour le reste d’entre vous, cette section servira de cours intensif rapide sur le langage de programmation Python et son utilisation pour l’informatique scientifique. Nous allons également introduire des ordinateurs portables, qui sont un moyen très pratique de bricoler avec du code Python. Certains d’entre vous peuvent avoir des connaissances antérieures dans un langage différent, auquel cas nous recommandons également de référencer:NumPy pour les utilisateurs Matlab,Python pour les utilisateurs R et/orPython pour les utilisateurs SAS.,

  • Liste
  • Dictionnaires
  • Jeux
  • Tuples
  • Fonctions
  • Classes
  • Numpy
    • les Tableaux
    • Tableau d’indexation
    • les Types de données
    • Array math
    • la Radiodiffusion
    • Numpy Documentation
  • SciPy
    • l’Image d’opérations
    • MATLAB fichiers
    • Distance entre les points
  • Matplotlib
    • Complot
    • sous-intrigues
    • Images
  • Jupyter et Colab ordinateurs Portables

    Avant de nous plonger dans Python, nous aimerions vous parler brièvement de carnets de notes.,Un bloc-notes Jupyter vous permet d’écrire et d’exécuterle code thython localement dans votre navigateur web. Jupyter notebooksfaire très facile de bricoler du code et de l’exécuter en bits et en morceaux; pour cette raison, ils sont largement utilisés dans l’informatique scientifique.Colab, d’autre part, est la saveur des ordinateurs portables Jupyter de Google qui est particulièrement adapté à l’apprentissage automatique et à l’analyse des données et qui fonctionne entièrement dans le cloud.,Colab est essentiellement Jupyter notebook sur les stéroïdes: il est gratuit,ne nécessite aucune configuration, est préinstallé avec de nombreux paquets,est facile à partager avec le monde, et bénéficie d’un accès gratuit à des accélérateurs matériels comme les GPU et les TPUs (avec quelques mises en garde).

    exécuter le tutoriel dans Colab (recommandé). Si vous souhaitez exécuter ce tutoriel entièrement dans Colab, cliquez sur le badge Open in Colab tout en haut de cette page.

    exécuter le tutoriel dans Jupyter Notebook., Si vous souhaitez exécuter L’ordinateur portable localement avec Jupyter, assurez-vous que votre environnement virtuel est installé correctement (conformément aux instructions de configuration), activez-le, puis exécutez pip install notebook pour installer Jupyter notebook. Ensuite, ouvrez le bloc-notes et téléchargez-le dans un répertoire de votre choix en cliquant avec le bouton droit sur la page et en sélectionnant Save Page As. Puis cd pour ce répertoire et exécutez jupyter notebook.

    Cela devrait lancer automatiquement un cahier serveur: .,Si tout a fonctionné correctement, vous devriez voir un écran comme celui-ci, montrant tousles Ordinateurs portables disponibles dans le répertoire courant. Cliquez sur jupyter-notebook-tutorial.ipynbet suivez les instructions dans le bloc-notes. Sinon, vous pouvez continuer à lire letutorial avec des extraits de code ci-dessous.

    Python

    Python est un langage de programmation multiparadigme de haut niveau, typé dynamiquement.On dit souvent que le code Python est presque comme un pseudocode, car il vous permet d’exprimer des idées très puissantes en très peu de lignes de code tout en étant très lisible., A titre d’exemple, voici une implémentation du quicksortalgorithm classique en Python:

    versions Python

    Depuis le 1er janvier 2020, Python a officiellement abandonné le support de python2.Pour cette classe, tout le code utilisera Python 3.7. Assurez-vous d’avoir suivi les instructions de configuration et d’avoir correctement installé un environnement virtuel python3 avant de poursuivre ce tutoriel.Vous pouvez vérifier votre version Python sur la ligne de commande après avoir activé votre environnement en exécutant python --version.,

    types de données de base

    comme la plupart des langages, Python a un certain nombre de types de base,y compris les entiers, les flottants, les booléens et les chaînes. Ces types de données se comportent de manière qui sontfamiliar d’autres langages de programmation.

    nombres: les entiers et les flottants fonctionnent comme on peut s’y attendre d’autres langages:

    notez que contrairement à de nombreuses langues, Python n’a pas d’opérateurs d’incrément unaire (x++)ou de décrémentation (x--).

    Python a également des types intégrés pour les nombres complexes;vous pouvez trouver tous les détails dans la documentation.,

    booléens: Python implémente tous les opérateurs habituels pour la logique booléenne, mais utilise des mots anglais plutôt que des symboles (&&, ||, etc.):

    Strings: Python prend en charge les strings:

    Les objets String ont un tas de méthodes utiles; par exemple:

    Vous pouvez trouver une liste de toutes les méthodes string dans la documentation.

    Containers

    Python inclut plusieurs types de containers intégrés: listes, dictionnaires, ensembles et tuples.,

    Lists

    Une liste est L’équivalent Python d’un tableau, mais est redimensionnable et peut contenir des éléments de différents types:

    comme d’habitude, vous pouvez trouver tous les détails sanglants sur listsdans la documentation.

    Slicing:en plus d’accéder aux éléments de liste un à la fois, Python fournit une syntaxe concise pour accéder aux sous-listes; ceci est connu sous le nom de slicing:

    Nous verrons à nouveau slicing dans le contexte des tableaux numpy.,

    Boucles: vous pouvez faire une boucle sur les éléments d’une liste comme ceci:

    animals = for animal in animals: print(animal)# Prints "cat", "dog", "monkey", each on its own line.

    Si vous voulez accéder à l’index de chaque élément dans le corps d’une boucle,utilisez la fonction intégréeenumerate:

    : lors de la programmation, nous voulons souvent transformer un type de données en un autre.,Comme exemple simple, considérons le code suivant qui calcule des nombres carrés:

    nums = squares = for x in nums: squares.append(x ** 2)print(squares) # Prints 

    Vous pouvez rendre ce code plus simple à l’aide d’une compréhension de liste:

    nums = squares = print(squares) # Prints 

    interprétations de la Liste peut aussi contenir des conditions:

    nums = even_squares = print(even_squares) # Prints ""

    Dictionnaires

    Un dictionnaire magasins (clé, valeur) paires, semblable à un Map en Java oran objet en Javascript., Vous pouvez l’utiliser comme ceci:

    Vous pouvez trouver tout ce que vous devez savoir sur les dictionnaires dans la documentation.

    Boucles: il est facile de parcourir les clés d’un dictionnaire:

    Si vous souhaitez accéder aux clés et à leurs valeurs correspondantes, utilisez la méthodeitems:

    compréhension du dictionnaire:elles sont similaires aux compréhensions de liste, mais vous permettent de construire facilement des descripteurs. Par exemple:

    nums = even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}print(even_num_to_square) # Prints "{0: 0, 2: 4, 4: 16}"

    Configure

    Un ensemble est une collection non ordonnée d’éléments distincts., Comme exemple simple, considérez ce qui suit:

    comme d’habitude, tout ce que vous voulez savoir sur les ensembles peut être trouvé dans la documentation.,

    Boucles:itérer sur un ensemble a la même syntaxe que itérer sur une liste;cependant, comme les ensembles ne sont pas ordonnés, vous ne pouvez pas faire d’hypothèses sur l’ordre dans lequel vous visitez les éléments de l’ensemble:

    animals = {'cat', 'dog', 'fish'}for idx, animal in enumerate(animals): print('#%d: %s' % (idx + 1, animal))# Prints "#1: fish", "#2: dog", "#3: cat"

    set comprehensions:comme les listes et les dictionnaires, nous pouvons>

    from math import sqrtnums = {int(sqrt(x)) for x in range(30)}print(nums) # Prints "{0, 1, 2, 3, 4, 5}"

    tuples

    un tuple est une liste ordonnée (immuable) de valeurs.,Un tuple est à bien des égards similaire à une liste; l’une des différences les plus importantes est que les utples peuvent être utilisés comme clés dans les dictionnaires et comme éléments d’ensembles, tandis que les listes ne le peuvent pas.Voici un exemple trivial:

    la documentation contient plus d’informations sur les tuples.

    Functions

    Les fonctions Python sont définies à l’aide du mot-clédef. Par exemple:

    Nous allons souvent définir des fonctions pour prendre des arguments de mots clés facultatifs, comme ceci:

    Il y a beaucoup plus d’informations sur les fonctions Python dans la documentation.,

    Catégories

    La syntaxe pour la définition des classes en Python est simple:

    Vous pouvez lire beaucoup plus sur Python classesin la documentation.

    Numpy

    Numpy est la bibliothèque de base pour le calcul scientifique dans Python.It fournit un objet de tableau multidimensionnel haute performance et des outils pour travailler avec thesearrays. Si vous êtes déjà familier avec MATLAB, vous trouverez peut-être ce tutoriel utile pour commencer avec Numpy.

    tableaux

    Un tableau numpy est une grille de valeurs, Toutes du même type, et est indexé par un tuple d’entiers non négatifs., Le nombre de dimensions est le rang du tableau; la forme d’un tableau est un tuple d’entiers donnant la taille du tableau le long de chaque dimension.

    Nous pouvons initialiser des tableaux numpy à partir de listes Python imbriquées,et accéder à des éléments en utilisant des crochets:

    Numpy fournit également de nombreuses fonctions pour créer des tableaux:

    Vous pouvez lire d’autres méthodes de création de tableaux dans la documentation.

    indexation de tableau

    Numpy offre plusieurs façons d’indexer dans des tableaux.

    découpage:semblable aux listes Python, les tableaux numpy peuvent être tranchés.,Comme les tableaux peuvent être multidimensionnels, vous devez spécifier une tranche pour chaque dimensiondu tableau:

    Vous pouvez également mélanger l’indexation des entiers avec l’indexation des tranches.Cependant, cela donnera un tableau de rang inférieur au tableau d’origine.Notez que ceci est très différent de la façon dont MATLAB gère le découpage de tableaux:

    indexation de tableaux entiers:lorsque vous indexez dans des tableaux numpy à l’aide du découpage, la vue de tableau résultante sera toujours un sous-tableau du tableau d’origine. En revanche, integer arrayindexing vous permet de construire des tableaux arbitraires en utilisant les données d’un autre tableau., Voici un exemple:

    Une astuce utile avec l’indexation de tableaux entiers consiste à sélectionner ou à muter un élément à partir de chaque ligne d’une matrice:

    indexation de tableaux booléens:l’indexation de tableaux booléens vous permet de sélectionner des éléments arbitraires d’un tableau.Fréquemment, ce type d’indexation est utilisé pour sélectionner les éléments d’un tableau qui satisfont à certaines conditions. Voici un exemple:

    Par souci de brièveté, nous avons omis beaucoup de détails sur l’indexation des tableaux numpy;si vous voulez en savoir plus, vous devriezraire la documentation.

    les Types de données

    Chaque tableau numpy est une grille d’éléments du même type.,Numpy fournit un grand ensemble de types de données numériques que vous pouvez utiliser pour construire des tableaux.Numpy essaie de deviner un type de données lorsque vous créez un tableau, mais les fonctions qui constructarrays incluent généralement également un argument facultatif pour spécifier explicitement le type de données.Voici un exemple:

    Vous pouvez tout lire sur les types de données numpy dans la documentation.,

    tableau math

    Les fonctions mathématiques de base fonctionnent au niveau élément sur les tableaux et sont disponibles en tant que surcharges d’opérateurs et en tant que fonctions dans le module numpy:

    notez que contrairement à MATLAB,* est une multiplication au niveau élément, Nous utilisons plutôt la fonction dot pour calculer les innerproducts de vecteurs, pour multiplier un vecteur par une matrice et pour multiplier les matrices., dot est disponible à la fois en tant que fonction dans le numpymodule et en tant que méthode d’instance d’objets array:

    Numpy fournit de nombreuses fonctions utiles pour effectuer des calculs onarrays; l’une des plus utiles est sum:

    Vous pouvez trouver la liste complète des fonctions mathématiques fournies par numpy dans la documentation.

    outre le calcul de fonctions mathématiques à l’aide de tableaux, nous avons souvent besoin de remodeler ou de manipuler autrement les données dans des tableaux., L’exemple le plus simple de ce type d’opération est la transposition d’une matrice; pour transposer une matrice,utilisez simplement l’attribut T d’un objet array:

    Numpy fournit beaucoup plus de fonctions pour manipuler des tableaux; vous pouvez voir la liste complète dans la documentation.

    Broadcasting

    Broadcasting est un mécanisme puissant qui permet à numpy de travailler avec des tableaux de differentshapes lors d’opérations arithmétiques. Souvent, nous avons un tableau plus petit et un tableau plus alarmant, et nous voulons utiliser le tableau plus petit plusieurs fois pour effectuer une opération sur le tableau plus grand.,

    par exemple, supposons que nous voulions ajouter un vecteur constant à chaque rangée d’une matrice. Nous pourrions le faire comme ceci:

    cela fonctionne; cependant lorsque la matricex est très grande, le calcul d’un python loopin explicite pourrait être lent. Notez que l’ajout de la vector v pour chaque ligne de la matricex est équivalent à la formation d’une matrice vv par l’empilement de plusieurs copies de v verticalement,puis en effectuant elementwise somme de x et vv., Nous pourrions implémenter thisapproach comme ceci:

    Numpy broadcasting nous permet d’effectuer ce calcul sans réellement créer plusieurs copies dev., Considérer cette version, à l’aide de la radiodiffusion:

    La ligne y = x + v fonctionne même si x a la forme (4, 3) et v a la forme(3,) en raison de la radiodiffusion; cette ligne fonctionne comme si v en fait, avait la forme (4, 3),où chaque ligne est une copie de v, et la somme a été réalisée elementwise.,

    la diffusion de deux tableaux ensemble suit ces règles:

    1. Si les tableaux n’ont pas le même rang, ajoutez la forme du tableau de rang inférieur avec 1s jusqu’à ce que les deux formes aient la même longueur.
    2. Les deux tableaux sont dits compatibles dans une dimension s’ils ont la même taille dans la dimension, ou si l’un des tableaux a la taille 1 dans cette dimension.
    3. Les tableaux peuvent être diffusés ensemble s’ils sont compatibles dans toutes les dimensions.
    4. après la diffusion, chaque tableau se comporte comme s’il avait une forme égale à l’élémentwisemaximum de formes des deux tableaux d’entrée.,
    5. dans n’importe quelle dimension où un tableau avait une taille 1 et l’autre une taille supérieure à 1,le premier tableau se comporte comme s’il avait été copié le long de cette dimension

    Si cette explication n’a pas de sens, essayez de lire l’explicationde la documentationou cette explication.

    Les fonctions qui prennent en charge la diffusion sont appelées fonctions universelles. Vous pouvez trouverla liste de toutes les fonctions universellesdans la documentation.,

    Voici quelques applications de la radiodiffusion:

    la diffusion rend généralement votre code plus concis et plus rapide, vous devez donc vous efforcer de l’utiliser dans la mesure du possible.

    documentation Numpy

    ce bref aperçu a abordé de nombreuses choses importantes que vous devez savoir sur numpy, mais est loin d’être complet. Consultez la référence thenumpy pour en savoir beaucoup plus sur numpy.

    scipy

    Numpy fournit un tableau multidimensionnel haute performance et des outils de base pour calculer et manipuler ces tableaux.,SciPybuilds à ce sujet, et fournitUN grand nombre de fonctions qui fonctionnent sur des tableaux numpy et sont utiles pour différents types d’applications scientifiques et d’ingénierie.

    la meilleure façon de se familiariser avec SciPy est de consulter la documentation.Nous allons mettre en évidence certaines parties de SciPy que vous pourriez trouver utiles pour cette classe.

    opérations D’Image

    SciPy fournit quelques fonctions de base pour travailler avec des images.Par exemple,il a des fonctions pour lire les images du disque dans des tableaux numpy, pour écrire des tableaux numpy sur le disque en tant qu’images et pour redimensionner les images.,Voici un exemple simple qui met en valeur ces fonctions:

    Gauche: L’image d’origine. À droite: l’image teintée et redimensionnée.

    fichiers MATLAB

    Les fonctionsscipy.io.loadmat Etscipy.io.savemat vous permettent de lire et d’écrire des fichiers MATLAB. Vous pouvez lire à leur sujet dans la documentation.

    Distance entre les points

    SciPy définit quelques fonctions utiles pour calculer les distances entre des ensembles de points.,

    la fonctionscipy.spatial.distance.pdist calcule la distance entre toutes les paires de points d’un ensemble donné:

    Vous pouvez lire tous les détails sur cette fonction dans la documentation.

    Une fonction similaire (scipy.spatial.distance.cdist) calcule la distance entre toutes les paires entre deux ensembles de points; vous pouvez lire à ce sujet dans la documentation.

    Matplotlib

    Matplotlib est un traceur library.In cette section donne une brève introduction au modulematplotlib.pyplot, qui fournit un système de traçage similaire à celui de MATLAB.,

    Tracé

    la fonction la plus importante dans matplotlib estplot,qui vous permet de tracer des données 2D. Voici un exemple simple:

    L’exécution de ce code produit le tracé suivant:

    avec juste un peu de travail supplémentaire, nous pouvons facilement tracer plusieurs lignes une fois et Ajouter un titre, une légende et des étiquettes d’axe:

    Vous pouvez en savoir beaucoup plus sur la fonction plot dans la documentation.,

    sous-tracés

    Vous pouvez tracer différentes choses dans la même figure en utilisant la fonctionsubplot.Voici un exemple:

    Vous pouvez lire beaucoup plus sur le subplot functionin la documentation.

    Images

    Vous pouvez utiliser la balise imshow fonction pour afficher les images. Voici un exemple:

    Share

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *