Skip to content

Commit

Permalink
Pending content on numpy intro
Browse files Browse the repository at this point in the history
  • Loading branch information
twitwi committed Oct 8, 2018
1 parent 3e6d72f commit fa911b7
Show file tree
Hide file tree
Showing 2 changed files with 128 additions and 0 deletions.
69 changes: 69 additions & 0 deletions _episodes/22-list-indices-avances.md
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}
59 changes: 59 additions & 0 deletions _episodes/23-creation-numpy.md
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}

0 comments on commit fa911b7

Please sign in to comment.