0% ont trouvé ce document utile (0 vote)
213 vues63 pages

Introduction à Numpy pour le Calcul Scientifique

Transféré par

Nicanor
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
213 vues63 pages

Introduction à Numpy pour le Calcul Scientifique

Transféré par

Nicanor
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Numpy Matplotlib

Python

Option « Programmation en Python »


IP[y]:
numpy : librairie pour le calcul
IPython scientifique


numpy ?

▶ Le module numpy est l’outil de base utilisé dans tous calculs scientifiques et donc
numériques en Python
▶ numpy fournit en particulier des objets de type vecteurs, matrices et plus
généralement tableaux à n dimensions
▶ numpy facilite et optimise† les opérations de stockage et de manipulation des
données numériques notamment lorsque la taille des tableaux devient
importante → array oriented computing

† les principales fonctions de numpy sont implémentées en C et en


Fortran

numpy : librairie pour le calcul scientifique 1


Installation & importation de numpy

▶ Installation via pip

 pip install numpy

▶ Convention d’importation

In [1]: import numpy as np

numpy : librairie pour le calcul scientifique 2


Installation & importation de numpy

▶ Installation via pip

 pip install numpy

▶ Convention d’importation

In [1]: import numpy as np

numpy : librairie pour le calcul scientifique 2


Documentation numpy

▶ Documentation de référence du module [Link]


▶ Aide interactive

In [1]: [Link]?
1 Docstring:
2 array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
3
4 Create an array.
5 ...

In [2]: [Link]("create array")


1 Search results for 'create array'
2 ---------------------------------
3 [Link]
4 Create an array.
5 [Link]
6 Create a memory-map to an array stored in a *binary* file on disk.

numpy : librairie pour le calcul scientifique 3


Documentation numpy

▶ Documentation de référence du module [Link]


▶ Aide interactive

In [1]: [Link]?
1 Docstring:
2 array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
3
4 Create an array.
5 ...

In [2]: [Link]("create array")


1 Search results for 'create array'
2 ---------------------------------
3 [Link]
4 Create an array.
5 [Link]
6 Create a memory-map to an array stored in a *binary* file on disk.

numpy : librairie pour le calcul scientifique 3


Création de vecteurs, matrices
▶ À partir d’une liste de valeurs
▶ Vecteur
In [2]: v = [Link]([0, 1, 2, 3])
In [3]: v
Out[3]: array([0, 1, 2, 3])

▶ Matrice 2×2
In [4]: M = [Link]([[0, 1], [2, 3]])
In [5]: M
Out[5]:
array([[0, 1],
[2, 3]])

In [6]: type(v), type(M)


Out[6]: ([Link], [Link])

In [7]: [Link], [Link]


Out[7]: (1, 2)

In [8]: [Link], [Link]


Out[8]: ((4,), (2, 2))

numpy : librairie pour le calcul scientifique 4


Création de vecteurs, matrices
▶ À partir d’une liste de valeurs
▶ Vecteur
In [2]: v = [Link]([0, 1, 2, 3])
In [3]: v
Out[3]: array([0, 1, 2, 3])

▶ Matrice 2×2
In [4]: M = [Link]([[0, 1], [2, 3]])
In [5]: M
Out[5]:
array([[0, 1],
[2, 3]])

In [6]: type(v), type(M)


Out[6]: ([Link], [Link])

In [7]: [Link], [Link]


Out[7]: (1, 2)

In [8]: [Link], [Link]


Out[8]: ((4,), (2, 2))

numpy : librairie pour le calcul scientifique 4


Création de vecteurs, matrices
▶ À partir d’une liste de valeurs
▶ Vecteur
In [2]: v = [Link]([0, 1, 2, 3])
In [3]: v
Out[3]: array([0, 1, 2, 3])

▶ Matrice 2×2
In [4]: M = [Link]([[0, 1], [2, 3]])
In [5]: M
Out[5]:
array([[0, 1],
[2, 3]])

In [6]: type(v), type(M)


Out[6]: ([Link], [Link])

In [7]: [Link], [Link]


Out[7]: (1, 2)

In [8]: [Link], [Link]


Out[8]: ((4,), (2, 2))

numpy : librairie pour le calcul scientifique 4


Pourquoi numpy ?

▶ Les objets de type [Link] ≡ à une liste Python (ou liste de listes)
▶ Pourquoi ne pas simplement utiliser les listes Python pour les calculs au
lieu de créer un nouveau type de tableau ?

numpy : librairie pour le calcul scientifique 5


Pourquoi numpy ?

Il existe plusieurs (très bonnes) raisons à cela:


▶ Les listes Python sont très générales (on parle également d’objet de haut
niveau). Elles peuvent contenir n’importe quel objet → typage dynamique.
Elles ne supportent pas les opérations mathématiques.
▶ Les tableaux ou array de numpy sont statiquement typées et homogènes†
▶ Le type des éléments est déterminé lorsque le tableau est créé → plus de typage
dynamique
▶ De même la taille du tableau est fixée à la création → stockage en mémoire
optimisée
▶ En raison du typage statique, les fonctions mathématiques telles que la
multiplication et l’addition de matrices peuvent être mises en œuvre via un
langage compilé (C et Fortran)

† pour plus de détails, cf. discussion 

numpy : librairie pour le calcul scientifique 6


Pourquoi numpy ?

Il existe plusieurs (très bonnes) raisons à cela:


▶ Les listes Python sont très générales (on parle également d’objet de haut
niveau). Elles peuvent contenir n’importe quel objet → typage dynamique.
Elles ne supportent pas les opérations mathématiques.
▶ Les tableaux ou array de numpy sont statiquement typées et homogènes†
▶ Le type des éléments est déterminé lorsque le tableau est créé → plus de typage
dynamique
▶ De même la taille du tableau est fixée à la création → stockage en mémoire
optimisée
▶ En raison du typage statique, les fonctions mathématiques telles que la
multiplication et l’addition de matrices peuvent être mises en œuvre via un
langage compilé (C et Fortran)

† pour plus de détails, cf. discussion 

numpy : librairie pour le calcul scientifique 6


Pourquoi numpy ?

Il existe plusieurs (très bonnes) raisons à cela:


▶ Les listes Python sont très générales (on parle également d’objet de haut
niveau). Elles peuvent contenir n’importe quel objet → typage dynamique.
Elles ne supportent pas les opérations mathématiques.
▶ Les tableaux ou array de numpy sont statiquement typées et homogènes†
▶ Le type des éléments est déterminé lorsque le tableau est créé → plus de typage
dynamique
▶ De même la taille du tableau est fixée à la création → stockage en mémoire
optimisée
▶ En raison du typage statique, les fonctions mathématiques telles que la
multiplication et l’addition de matrices peuvent être mises en œuvre via un
langage compilé (C et Fortran)

† pour plus de détails, cf. discussion 

numpy : librairie pour le calcul scientifique 6


Pourquoi numpy ?

Il existe plusieurs (très bonnes) raisons à cela:


▶ Les listes Python sont très générales (on parle également d’objet de haut
niveau). Elles peuvent contenir n’importe quel objet → typage dynamique.
Elles ne supportent pas les opérations mathématiques.
▶ Les tableaux ou array de numpy sont statiquement typées et homogènes†
▶ Le type des éléments est déterminé lorsque le tableau est créé → plus de typage
dynamique
▶ De même la taille du tableau est fixée à la création → stockage en mémoire
optimisée
▶ En raison du typage statique, les fonctions mathématiques telles que la
multiplication et l’addition de matrices peuvent être mises en œuvre via un
langage compilé (C et Fortran)

† pour plus de détails, cf. discussion 

numpy : librairie pour le calcul scientifique 6


Pourquoi numpy ?

Il existe plusieurs (très bonnes) raisons à cela:


▶ Les listes Python sont très générales (on parle également d’objet de haut
niveau). Elles peuvent contenir n’importe quel objet → typage dynamique.
Elles ne supportent pas les opérations mathématiques.
▶ Les tableaux ou array de numpy sont statiquement typées et homogènes†
▶ Le type des éléments est déterminé lorsque le tableau est créé → plus de typage
dynamique
▶ De même la taille du tableau est fixée à la création → stockage en mémoire
optimisée
▶ En raison du typage statique, les fonctions mathématiques telles que la
multiplication et l’addition de matrices peuvent être mises en œuvre via un
langage compilé (C et Fortran)

† pour plus de détails, cf. discussion 

numpy : librairie pour le calcul scientifique 6


Pourquoi numpy ?

▶ Démonstration

In [1]: %timeit [i**2 for i in range(1000)]


1000 loops, best of 3: 403 us per loop

In [3]: a = [Link](1000)
In [4]: %timeit a**2
100000 loops, best of 3: 12.7 us per loop

numpy : librairie pour le calcul scientifique 7


Pourquoi numpy ?

▶ Démonstration

In [1]: %timeit [i**2 for i in range(1000)]


1000 loops, best of 3: 403 us per loop

In [3]: a = [Link](1000)
In [4]: %timeit a**2
100000 loops, best of 3: 12.7 us per loop

numpy : librairie pour le calcul scientifique 7


Création de tableau (suite)
▶ Le type de données numériques est défini à la création du tableau
▶ Vecteur d’entiers
In [1]: v = [Link]([0, 1, 2, 3])
In [2]: v
Out[2]: array([0, 1, 2, 3])

In [3]: [Link]
Out[3]: dtype('int64')

▶ Vecteur de nombres flottants


In [1]: v = [Link]([0., 1., 2., 3.])
In [2]: [Link]
Out[2]: dtype('float64')

▶ ou en forçant le type de données (float, int, bool, 16, 32, 64 bits)

In [1]: v = [Link]([0, 1, 2, 3], dtype=[Link])


In [2]: [Link]
Out[2]: dtype('float64')

numpy : librairie pour le calcul scientifique 8


Création de tableau (suite)
▶ Le type de données numériques est défini à la création du tableau
▶ Vecteur d’entiers
In [1]: v = [Link]([0, 1, 2, 3])
In [2]: v
Out[2]: array([0, 1, 2, 3])

In [3]: [Link]
Out[3]: dtype('int64')

▶ Vecteur de nombres flottants


In [1]: v = [Link]([0., 1., 2., 3.])
In [2]: [Link]
Out[2]: dtype('float64')

▶ ou en forçant le type de données (float, int, bool, 16, 32, 64 bits)

In [1]: v = [Link]([0, 1, 2, 3], dtype=[Link])


In [2]: [Link]
Out[2]: dtype('float64')

numpy : librairie pour le calcul scientifique 8


Création de tableau (suite)
▶ Le type de données numériques est défini à la création du tableau
▶ Vecteur d’entiers
In [1]: v = [Link]([0, 1, 2, 3])
In [2]: v
Out[2]: array([0, 1, 2, 3])

In [3]: [Link]
Out[3]: dtype('int64')

▶ Vecteur de nombres flottants


In [1]: v = [Link]([0., 1., 2., 3.])
In [2]: [Link]
Out[2]: dtype('float64')

▶ ou en forçant le type de données (float, int, bool, 16, 32, 64 bits)

In [1]: v = [Link]([0, 1, 2, 3], dtype=[Link])


In [2]: [Link]
Out[2]: dtype('float64')

numpy : librairie pour le calcul scientifique 8


Création de tableau (suite)
▶ Le type de données numériques est défini à la création du tableau
▶ Vecteur d’entiers
In [1]: v = [Link]([0, 1, 2, 3])
In [2]: v
Out[2]: array([0, 1, 2, 3])

In [3]: [Link]
Out[3]: dtype('int64')

▶ Vecteur de nombres flottants


In [1]: v = [Link]([0., 1., 2., 3.])
In [2]: [Link]
Out[2]: dtype('float64')

▶ ou en forçant le type de données (float, int, bool, 16, 32, 64 bits)

In [1]: v = [Link]([0, 1, 2, 3], dtype=[Link])


In [2]: [Link]
Out[2]: dtype('float64')

numpy : librairie pour le calcul scientifique 8


Création de tableau (suite)

Dans la pratique, les valeurs d’un tableau sont rarement saisies une par une
▶ Fonction arange ≡ range

In [1]: [Link](10)
Out[1]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [2]: [Link](0, 10, step=2)


Out[2]: array([0, 2, 4, 6, 8])

▶ Fonctions linspace/logspace

In [1]: [Link](0, 10, num=5)


Out[1: array([ 0. , 2.5, 5. , 7.5, 10. ])

In [2]: [Link](0, 10, num=5)


Out[2]:
array([ 1.00000000e+00, 3.16227766e+02, 1.00000000e+05,
3.16227766e+07, 1.00000000e+10])

numpy : librairie pour le calcul scientifique 9


Création de tableau (suite)

Dans la pratique, les valeurs d’un tableau sont rarement saisies une par une
▶ Fonction arange ≡ range

In [1]: [Link](10)
Out[1]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [2]: [Link](0, 10, step=2)


Out[2]: array([0, 2, 4, 6, 8])

▶ Fonctions linspace/logspace

In [1]: [Link](0, 10, num=5)


Out[1: array([ 0. , 2.5, 5. , 7.5, 10. ])

In [2]: [Link](0, 10, num=5)


Out[2]:
array([ 1.00000000e+00, 3.16227766e+02, 1.00000000e+05,
3.16227766e+07, 1.00000000e+10])

numpy : librairie pour le calcul scientifique 9


Création de tableau (suite)

▶ Vecteurs, matrices avec valeurs par défaut

In [1]: [Link](10)
Out[1]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

In [2]: [Link](shape=(3,3))
Out[2]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])

In [3]: [Link]((3,3), 666, dtype=[Link])


Out[3]:
array([[666, 666, 666],
[666, 666, 666],
[666, 666, 666]])

In [4]: [Link]((3,3))
Out[4]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])

numpy : librairie pour le calcul scientifique 10


Création de tableau (suite)

▶ Générateurs aléatoires rand/randint/randn

In [1]: [Link](3)
Out[1]: array([ 0.21401051, 0.19514481, 0.92647823])

In [2]: [Link](0, 10, 3)


Out[2]: array([8, 8, 3])

In [3]: [Link](3)
Out[3]: array([-0.4829445 , -1.05459848, -1.30539831])

 Un générateur aléatoire n’est par définition pas aléatoire dans une


machine déterministe qu’est un ordinateur !

In [1]: [Link](1234)

numpy : librairie pour le calcul scientifique 11


Création de tableau (suite)

▶ Générateurs aléatoires rand/randint/randn

In [1]: [Link](3)
Out[1]: array([ 0.21401051, 0.19514481, 0.92647823])

In [2]: [Link](0, 10, 3)


Out[2]: array([8, 8, 3])

In [3]: [Link](3)
Out[3]: array([-0.4829445 , -1.05459848, -1.30539831])

 Un générateur aléatoire n’est par définition pas aléatoire dans une


machine déterministe qu’est un ordinateur !

In [1]: [Link](1234)

numpy : librairie pour le calcul scientifique 11


Création de tableau : intermède graphique

30

2
25
In [1]: import numpy as np
In [2]: import [Link] as plt
1
In [3]: %matplotlib 20

In [4]: img = [Link](30, 30) 0


15
In [5]: [Link](img, cmap=[Link],
extent=(0,30,0,30)) −1
In [6]: [Link]() 10

−2
5

−3
0 . .
0 5 10 15 20 25 30

numpy : librairie pour le calcul scientifique 12


Parcours par indice

▶ L’utilisation de l’opérateur [] est similaire à celle des listes

In [1]: x = [Link](10, size=5)


In [2]: x
Out[2]: array([8, 0, 1, 6, 0])

In [3]: x[0], x[3], x[-1]


Out[3]: (8, 6, 0)

▶ Pour les tableaux à n dimensions

In [1]: x = [Link](10, size=(3, 4))


In [2]: x
Out[2]:
array([[8, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

In [3]: x[0, 0], x[2, 0], x[2, -1]


Out[3]: (8, 0, 4)

numpy : librairie pour le calcul scientifique 13


Parcours par indice

▶ L’utilisation de l’opérateur [] est similaire à celle des listes

In [1]: x = [Link](10, size=5)


In [2]: x
Out[2]: array([8, 0, 1, 6, 0])

In [3]: x[0], x[3], x[-1]


Out[3]: (8, 6, 0)

▶ Pour les tableaux à n dimensions

In [1]: x = [Link](10, size=(3, 4))


In [2]: x
Out[2]:
array([[8, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

In [3]: x[0, 0], x[2, 0], x[2, -1]


Out[3]: (8, 0, 4)

numpy : librairie pour le calcul scientifique 13


Parcours par indice

▶ Comme pour les listes qui sont des objets mutables, il est possible d’assigner
une valeur en spécifiant l’indice

In [4]: x[0, 0] = 12
In [5]: x
Out[5]:
array([[12, 3, 6, 4],
[ 9, 8, 2, 0],
[ 0, 5, 5, 4]])

 Le type de données numériques stockées est fixé à la création du tableau


In [6]: x[0, 0] = 3.1415
In [7]: x
Out[7]:
array([[3, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

numpy : librairie pour le calcul scientifique 14


Parcours par indice

▶ Comme pour les listes qui sont des objets mutables, il est possible d’assigner
une valeur en spécifiant l’indice

In [4]: x[0, 0] = 12
In [5]: x
Out[5]:
array([[12, 3, 6, 4],
[ 9, 8, 2, 0],
[ 0, 5, 5, 4]])

 Le type de données numériques stockées est fixé à la création du tableau


In [6]: x[0, 0] = 3.1415
In [7]: x
Out[7]:
array([[3, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

numpy : librairie pour le calcul scientifique 14


Sélection par indice

▶ Comme pour les listes, il est possible d’utiliser la syntaxe [start:stop:step]


pour sélectionner un sous espace vectoriel

In [1]: x
Out[1]:
array([[3, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

▶ Sélection d’une ligne

In [2]: x[0]
Out[2]: array([[3, 3, 6, 4])

▶ Sélection d’une colonne

In [2]: x[:, 0], x[:, 1]


Out[2]: (array([3, 9, 0]), array([3, 8, 5]))

numpy : librairie pour le calcul scientifique 15


Sélection par indice

▶ Comme pour les listes, il est possible d’utiliser la syntaxe [start:stop:step]


pour sélectionner un sous espace vectoriel

In [1]: x
Out[1]:
array([[3, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

▶ Sélection d’une ligne

In [2]: x[0]
Out[2]: array([[3, 3, 6, 4])

▶ Sélection d’une colonne

In [2]: x[:, 0], x[:, 1]


Out[2]: (array([3, 9, 0]), array([3, 8, 5]))

numpy : librairie pour le calcul scientifique 15


Sélection par indice
▶ À la différence des listes, les sous espaces vectoriels sélectionnés ne sont pas des
copies mais une vue réduite de la matrice globale
▶ Toute modification opérée sur le sous espace vectoriel est reportée dans la
matrice globale

In [1]: x
Out[1]:
array([[3, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

In [2]: xx = x[:2, :2]


In [3]: xx
Out[3]:
array([[3, 3],
[9, 8]])

In [4]: xx[0, 0] = 0
In [5]: x
Out[5]:
array([[0, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

numpy : librairie pour le calcul scientifique 16


Sélection par indice
▶ À la différence des listes, les sous espaces vectoriels sélectionnés ne sont pas des
copies mais une vue réduite de la matrice globale
▶ Toute modification opérée sur le sous espace vectoriel est reportée dans la
matrice globale

In [1]: x
Out[1]:
array([[3, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

In [2]: xx = x[:2, :2]


In [3]: xx
Out[3]:
array([[3, 3],
[9, 8]])

In [4]: xx[0, 0] = 0
In [5]: x
Out[5]:
array([[0, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

numpy : librairie pour le calcul scientifique 16


Sélection par indice

▶ Pour réaliser une copie d’un sous espace vectoriel, on utilisera la méthode
copy()

In [2]: xx = x[:2, :2].copy()


In [3]: xx
Out[3]:
array([[0, 3],
[9, 8]])

In [4]: xx[0, 0] = 666


In [5]: x
Out[5]:
array([[0, 3, 6, 4],
[9, 8, 2, 0],
[0, 5, 5, 4]])

numpy : librairie pour le calcul scientifique 17


Opérations mathématiques

▶ Grâce à l’homogénéité des tableaux de numpy, il est possible de réaliser des


opérations mathématiques ̸= listes Python

In [1]: l = [1, 2, 3, 4]
In [2]: l+5
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-53-1cb32c2d071d> in <module>()
----> 1 l+5

TypeError: can only concatenate list (not "int") to list

numpy : librairie pour le calcul scientifique 18


Opérations mathématiques

▶ Grâce à l’homogénéité des tableaux de numpy, il est possible de réaliser des


opérations mathématiques
▶ Opérateurs binaires

In [1]: x = [Link](4)
In [2]: x
Out[2]: array([0, 1, 2, 3])

In [3]: x+5
Out[3]: array([5, 6, 7, 8])

In [4]: x-5
Out[4]: array([-5, -4, -3, -2])

In [5]: x*5
Out[5]: array([ 0, 5, 10, 15])

In [5]: x/5
Out[5]: array([ 0. , 0.2, 0.4, 0.6]))

numpy : librairie pour le calcul scientifique 19


Opérations mathématiques

▶ Grâce à l’homogénéité des tableaux de numpy, il est possible de réaliser des


opérations mathématiques
▶ Opérateurs unaires

In [1]: x = [Link](4)

In [2]: -x
Out[2]: array([0, -1, -2, -3])

In [3]: x**2
Out[3]: array([0, 1, 4, 9])

In [4]: x%2
Out[4]: array([0, 1, 0, 1])

numpy : librairie pour le calcul scientifique 20


Opérations mathématiques

▶ En plus des opérateurs usuels, numpy fournit un ensemble de fonctions dites


universelles (ou ufuncs) opérant sur des tableaux
▶ Fonctions trigonométriques

In [1]: theta = [Link](0, [Link], 3)

In [2]: [Link](theta)
Out[2]: array([ 1.00000000e+00, 6.12323400e-17, -1.00000000e+00])

In [3]: [Link](theta)
Out[3]: array([ 0.00000000e+00, 1.00000000e+00, 1.22464680e-16])

In [4]: [Link](theta)
Out[4]: array([ 0.00000000e+00, 1.63312394e+16, -1.22464680e-16])

▶ Autres fonctions : [Link](), [Link](), [Link](), np.log10(),...

numpy : librairie pour le calcul scientifique 21


Opérations mathématiques

▶ En plus des opérateurs usuels, numpy fournit un ensemble de fonctions dites


universelles (ou ufuncs) opérant sur des tableaux
▶ Fonctions trigonométriques

In [1]: theta = [Link](0, [Link], 3)

In [2]: [Link](theta)
Out[2]: array([ 1.00000000e+00, 6.12323400e-17, -1.00000000e+00])

In [3]: [Link](theta)
Out[3]: array([ 0.00000000e+00, 1.00000000e+00, 1.22464680e-16])

In [4]: [Link](theta)
Out[4]: array([ 0.00000000e+00, 1.63312394e+16, -1.22464680e-16])

▶ Autres fonctions : [Link](), [Link](), [Link](), np.log10(),...

numpy : librairie pour le calcul scientifique 21


Opérations mathématiques

▶ En plus des opérateurs usuels, numpy fournit un ensemble de fonctions dites


universelles (ou ufuncs) opérant sur des tableaux
▶ Fonctions trigonométriques

In [1]: theta = [Link](0, [Link], 3)

In [2]: [Link](theta)
Out[2]: array([ 1.00000000e+00, 6.12323400e-17, -1.00000000e+00])

In [3]: [Link](theta)
Out[3]: array([ 0.00000000e+00, 1.00000000e+00, 1.22464680e-16])

In [4]: [Link](theta)
Out[4]: array([ 0.00000000e+00, 1.63312394e+16, -1.22464680e-16])

▶ Autres fonctions : [Link](), [Link](), [Link](), np.log10(),...

numpy : librairie pour le calcul scientifique 21


Opérations statistiques

▶ Somme des éléments d’un tableau

In [1]: x = [Link](100)

In [2]: sum(x)
Out[2]: 50.394482884150314

In [3]: [Link](x)
Out[3]: 50.394482884150314

▶ Toutefois, la formulation [Link]() propre à numpy présente l’avantage d’être


nettement plus rapide (code compilé) en plus d’être plus générale

In [4]: big_array = [Link](1000000)

In [5]: %timeit sum(big_array)


10 loops, best of 3: 82.9 ms per loop

In [6]: %timeit [Link](big_array)


1000 loops, best of 3: 467 µs per loop

numpy : librairie pour le calcul scientifique 22


Opérations statistiques

▶ Somme des éléments d’un tableau

In [1]: x = [Link](100)

In [2]: sum(x)
Out[2]: 50.394482884150314

In [3]: [Link](x)
Out[3]: 50.394482884150314

▶ Toutefois, la formulation [Link]() propre à numpy présente l’avantage d’être


nettement plus rapide (code compilé) en plus d’être plus générale

In [4]: big_array = [Link](1000000)

In [5]: %timeit sum(big_array)


10 loops, best of 3: 82.9 ms per loop

In [6]: %timeit [Link](big_array)


1000 loops, best of 3: 467 µs per loop

numpy : librairie pour le calcul scientifique 22


Opérations statistiques
▶ Somme des éléments d’un tableau : méthode sum
In [1]: M = [Link](10, (3, 4))
In [2]: M
Out[2]:
array([[7, 0, 8, 4],
[4, 7, 0, 5],
[7, 0, 7, 6]])

In [3]: [Link](M), [Link]()


Out[3]: (55, 55)

▶ Somme colonne par colonne


In [4]: [Link](axis=0)
Out[4]: array([18, 7, 15, 15])

▶ Somme ligne par ligne


In [5]: [Link](axis=1)
Out[5]: array([19, 16, 20])

numpy : librairie pour le calcul scientifique 23


Opérations statistiques
▶ Somme des éléments d’un tableau : méthode sum
In [1]: M = [Link](10, (3, 4))
In [2]: M
Out[2]:
array([[7, 0, 8, 4],
[4, 7, 0, 5],
[7, 0, 7, 6]])

In [3]: [Link](M), [Link]()


Out[3]: (55, 55)

▶ Somme colonne par colonne


In [4]: [Link](axis=0)
Out[4]: array([18, 7, 15, 15])

▶ Somme ligne par ligne


In [5]: [Link](axis=1)
Out[5]: array([19, 16, 20])

numpy : librairie pour le calcul scientifique 23


Opérations statistiques
▶ Somme des éléments d’un tableau : méthode sum
In [1]: M = [Link](10, (3, 4))
In [2]: M
Out[2]:
array([[7, 0, 8, 4],
[4, 7, 0, 5],
[7, 0, 7, 6]])

In [3]: [Link](M), [Link]()


Out[3]: (55, 55)

▶ Somme colonne par colonne


In [4]: [Link](axis=0)
Out[4]: array([18, 7, 15, 15])

▶ Somme ligne par ligne


In [5]: [Link](axis=1)
Out[5]: array([19, 16, 20])

numpy : librairie pour le calcul scientifique 23


Opérations statistiques

Fonction Description
[Link] Somme des éléments
[Link] Produit des éléments
[Link] Valeur moyenne
[Link] Standard déviation
[Link] Variance
[Link] Valeur minimale
[Link] Valeur maximale
[Link] Indice de la valeur minimale
[Link] Indice de la valeur maximale
[Link] Valeur médiane
[Link] Quantiles

numpy : librairie pour le calcul scientifique 24


Opérations algébriques

▶ Multiplication de matrices

In [1]: M = [Link](shape=(3,3))
In [2]: M
Out[2]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])

In [3]: M*M
Out[3]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])

In [4]: [Link](M)
Out[4]:
array([[ 3., 3., 3.],
[ 3., 3., 3.],
[ 3., 3., 3.]])

numpy : librairie pour le calcul scientifique 25


Opérations algébriques

▶ Transposition de matrices

In [1]: M = [Link](5, size=(3,3))


In [2]: M
Out[2]:
array([[4, 1, 0],
[2, 3, 0],
[1, 0, 2]])

In [3]: [Link]()
Out[3]:
array([[4, 2, 1],
[1, 3, 0],
[0, 0, 2]])

numpy : librairie pour le calcul scientifique 26


Opérations algébriques

▶ Conversion d’un vecteur vers une matrice

In [1]: v = [Link](4)
In [2]: v
Out[2]: array([0, 1, 2, 3])

In [3]: v[:, [Link]]


Out[3]:
array([[0],
[1],
[2],
[3]])

numpy : librairie pour le calcul scientifique 27


Opérations algébriques : intermède graphique

z = f (x , y ) = sin1 0 x + cos(x · y ) · cos x


( [ ])
10 [ ] [ ] [ ]
y0
= sin x0 · · · + cos x0 ··· · . · cos x0 ···
..

In [1]: import numpy as np


In [2]: import [Link] as plt
In [3]: %matplotlib

In [4]: x = [Link](0, 5, 500)


In [5]: y = [Link](0, 5, 500)[:, [Link]]
In [6]: z = [Link](x)**10 + [Link](x*y)*[Link](x)
In [7]: [Link], [Link], [Link]
Out[7]: ((500,), (500, 1), (500, 500))

In [8]: [Link](z, extent=[0, 5, 0, 5],


cmap="viridis")
In [9]: [Link]();

numpy : librairie pour le calcul scientifique 28


Opérations algébriques : intermède graphique

z = f (x , y ) = sin1 0 x + cos(x · y ) · cos x


( [ ])
10 [ ] [ ] [ ]
y0
= sin x0 · · · + cos x0 ··· · . · cos x0 ···
..

In [1]: import numpy as np 5


1.00
In [2]: import [Link] as plt
In [3]: %matplotlib 0.75
4
0.50
In [4]: x = [Link](0, 5, 500)
In [5]: y = [Link](0, 5, 500)[:, [Link]] 0.25
3
In [6]: z = [Link](x)**10 + [Link](x*y)*[Link](x)
In [7]: [Link], [Link], [Link] 0.00
Out[7]: ((500,), (500, 1), (500, 500)) 2
−0.25

In [8]: [Link](z, extent=[0, 5, 0, 5],


−0.50
cmap="viridis") 1
In [9]: [Link](); −0.75

0 . .
0 1 2 3 4 5

.
numpy : librairie pour le calcul scientifique 28
Opérations logiques

▶ En plus des opérateurs et fonctions mathématiques, numpy fournit également les


opérateurs de comparaison opérant sur les éléments d’un tableau

In [1]: x = [Link]([1, 2, 3, 4, 5])

In [2]: x < 3
Out[2]: array([ True, True, False, False, False], dtype=bool)

In [3]: x == 3
Out[3]: array([False, False, True, False, False], dtype=bool)

In [4]: (x * 2) == (x**2)
Out[4]: array([False, True, False, False, False], dtype=bool)

numpy : librairie pour le calcul scientifique 29


Opérations logiques

▶ numpy fournit également les méthodes any et all

In [5]: [Link](x > 10)


Out[5]: False

In [6]: [Link](x < 10)


Out[6]: True

numpy : librairie pour le calcul scientifique 30


Opérations logiques

▶ Il est finalement possible de dénombrer le nombre de valeurs d’un tableau


satisfaisant à une ou des conditions

In [7]: [Link](x > 3)


Out[7]: 2

In [8]: [Link]((x > 3) & (x < 5))


Out[8]: 1

numpy : librairie pour le calcul scientifique 31


Sélection par masque

▶ Les opérations de comparaison sur des tableaux retournent un tableau de


booléens qui peut servir à la sélection d’éléments du tableau

In [1]: x = [Link](0, 10, 10)


In [2]: x
Out[2]: array([8, 9, 6, 2, 4, 5, 9, 4, 0, 7])

In [3]: x < 5
Out[3]: array([False, False, False, True, True, False, False, True, True, False], dtype=bool)

In [4]: x[x < 5]


Out[4]: array([2, 4, 4, 0])

numpy : librairie pour le calcul scientifique 32


Sélection par masque : intermède graphique

In [1]: import numpy as np 1.0

In [2]: import [Link] as plt


In [3]: %matplotlib
0.8

In [4]: x = [Link](1000)
In [5]: y = [Link](1000)
0.6
In [6]: [Link](x, y, alpha=0.3)
In [7]: [Link]("scaled"); [Link]([0, 1, 0, 1])
0.4
In [8]: mask = (x*y > 0.5)
In [9]: [Link](x[mask], y[mask], alpha=0.6,
edgecolors="orange", c="none", 0.2
s=200)

0.0
0.0 0.2 0.4 0.6 0.8 1.0

numpy : librairie pour le calcul scientifique 33


Entrées/sorties de numpy

▶ numpy permet de charger un fichier texte dans un objet de type ndarray

In [1]: cat /tmp/[Link]


# id OPP MQ1 MA
21606456 9.90 12.32 16.00
21402354 11.20 10.50 12.25

In [2]: results = [Link]("/tmp/[Link]")


In [3]: results
Out[3]:
array([[ 2.16064560e+07, 9.90000000e+00, 1.23200000e+01,
1.60000000e+01],
[ 2.14023540e+07, 1.12000000e+01, 1.05000000e+01,
1.22500000e+01]])

numpy : librairie pour le calcul scientifique 34


Entrées/sorties de numpy

▶ numpy permet également de sauvegarder un tableau dans un fichier texte

In [4]: [Link]("/tmp/[Link]", results)

▶ le module pandas  est toutefois bien mieux adapté à la lecture de fichier


contenant des données numériques

numpy : librairie pour le calcul scientifique 35


Entrées/sorties de numpy

▶ numpy permet également de sauvegarder un tableau dans un fichier texte

In [4]: [Link]("/tmp/[Link]", results)

▶ le module pandas  est toutefois bien mieux adapté à la lecture de fichier


contenant des données numériques

numpy : librairie pour le calcul scientifique 35


Annexes
Opérations algébriques : Broadcasting †

[Link](3)+5

0 1 2 + 5 5 5 = 5 6 7
[Link]((3,3))+[Link](3)

1 1 1 0 1 2 1 2 3
1 1 1 + 0 1 2 = 1 2 3
1 1 1 0 1 2 1 2 3
[Link](3).reshape((3,1))+[Link](3)

0 0 0 0 1 2 0 1 2
1 1 1 + 0 1 2 = 1 2 3
2 2 2 0 1 2 2 3 4
..
† pour plus de détails, cf. discussion 

numpy : librairie pour le calcul scientifique 37

Vous aimerez peut-être aussi