-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
128 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
--- | ||
title: "Indexage avancé de listes" | ||
teaching: 0 | ||
exercises: 0 | ||
questions: | ||
- "Comment accéder au n-ème élément d'une liste en partant de la fin ?" | ||
- "Comment extraire une sous-partie d'une liste ?" | ||
- "Comment inverser l'ordre d'une liste ?" | ||
objectives: | ||
- "Comprendre les indices négatifs." | ||
- "Comprendre les tranches de listes." | ||
keypoints: | ||
- "Un indice négatif compte en partant de la fin de la liste." | ||
- "L'indice de -1 représente le dernier élément de la liste, -2 l'avant dernier, etc." | ||
- "" | ||
--- | ||
|
||
|
||
> ## Syntaxe : Indices négatifs de liste | ||
> L'indice dans l'accès à une liste peut être négatif, pour compter la position de l'élément en partant de la fin de la liste. | ||
> Si `l` est une liste et `i` est négatif, on a: | ||
> | ||
> ~~~python | ||
> l[i] | ||
> ~~~ | ||
> {: .source} | ||
> | ||
> qui est équivalente à : | ||
> | ||
> ~~~python | ||
> l[len(l) + i] | ||
> ~~~ | ||
> {: .source} | ||
> Vue autrement, `l[-j]` est équivalent à `l[len(l) - j]`. | ||
{: .syntax} | ||
> ## Syntaxe : Tranches de liste | ||
> L'indice dans l'accès à une liste peut être complexe, pour extraire une « tranche » (sous partie de liste). | ||
> Si `l` est une liste et `a`, `b`, `c` trois entier (variables, constantes ou expressions) : | ||
> | ||
> ~~~python | ||
> res = l[a:b:c] | ||
> ~~~ | ||
> {: .source} | ||
> | ||
> est équivalente à : | ||
> | ||
> ~~~python | ||
> res = [] | ||
> for i n range(a, b, c): | ||
> res.append(l[i]) | ||
> ~~~ | ||
> | ||
> ou, avec la liste en compréhension : | ||
> | ||
> ~~~python | ||
> res = [l[i] for i in range(a, b, c)] | ||
> ~~~ | ||
> {: .source} | ||
> | ||
> Remarques: | ||
> | ||
> - Il est possible d'utiliser cette construction à gauche du `=` (pour remplacer les valeurs de la tranche de liste par celles d'une autre liste. | ||
> - Il est possible d'omettre le `a`, dans ce cas la tranche part du début de la liste. | ||
> - Il est possible d'omettre le `b`, dans ce cas la tranche va jusqu'à la fin de la liste. | ||
> - Il est possible d'omettre le `c`, dans ce cas le pas vaut 1 (exemples : `l[1:8:]`, `l[5::]`, `l[3::]` ). | ||
> - Si le `c` est omis, il est possible d'omettre le second `:` (exemples : `l[1:8]`, `l[5:]`, `l[:3]`). | ||
{: .syntax} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
--- | ||
title: "Introduction Numpy" | ||
teaching: 0 | ||
exercises: 0 | ||
questions: | ||
- "Qu'est ce que Numpy ?" | ||
- "Comment importer la bibliothèque Numpy ?" | ||
- "Comment créer des tableaux Numpy ?" | ||
objectives: | ||
- "Comprendre l'intérêt et l'étendue de la bibliothèque Numpy." | ||
- "Découvrir quelques fonctions de création de tableaux numpy." | ||
keypoints: | ||
- "Numpy permet de représenter des tableaux de données et de manipuler ces tableaux facilement." | ||
- "Numpy propose l'équivalent de `range` mais pour la création de tableaux numpy, avec `np.arange` et `np.linspace`." | ||
- "Numpy permet aussi de créer des tableaux (par exemple remplis de 0) de taille demandée." | ||
- "Numpy permet aussi de créer des tableaux de taille demandée, mais en tirant les valeurs au sort." | ||
--- | ||
|
||
# Introduction et différence avec les listes | ||
|
||
Les tableaux numpy sont l'équivalents des listes Python mais avec quelques contraintes (et avantages). | ||
|
||
Par exemple, un tableau numpy ne peut contenir des données que d'un seul type : là où une liste Python peut mélanger des chaines de caractères avec des nombres, un tableau numpy interdira ce mélange (on ne mettra souvent que des nombres dans les tableaux numpy). | ||
|
||
De plus, pour représenter des « matrice », avec des listes Python, nous utilserions une liste contenant des listes de valeurs. | ||
Rien n'empêche une telle liste d'avoir des éléments (les listes) qui soient de longueur différentes. | ||
Un tableau numpy, lui, aura la contrainte d'être rectangle (chaque ligne a autant de valeurs). | ||
|
||
# Création de tableaux numpy 1D | ||
|
||
Pour rappel, la fonction `range` permet de créer des listes de nombres entiers. | ||
La valeur retournée par `range` n'est en fait pas vraiment une liste mais il possible d'obtenir une vraie liste. | ||
Par exemple ce code initialise une liste avec les nombres de 100 à 1000, de 10 en 10 : | ||
|
||
~~~python | ||
l = list(range(100, 1001, 10)) | ||
~~~ | ||
{: .source} | ||
|
||
À partir d'une liste Python quelconque (mais qui vérifie les contraintes des tableaux numpy), il est possible de créer un tableau numpy avec la fonction `np.array`. | ||
On peut ensuite afficher les deux version pour voir la différence. | ||
|
||
~~~python | ||
import numpy as np | ||
l = list(range(100, 201, 10)) | ||
t = np.array(l) | ||
print(l) | ||
print(t) | ||
~~~ | ||
{: .source} | ||
|
||
qui nous donne | ||
|
||
|
||
~~~ | ||
[100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] | ||
[100 110 120 130 140 150 160 170 180 190 200] | ||
~~~ | ||
{: .source} |