Numpy -- Episode 1

1- Numpy c’est ouf !!

NumPy est la bibliothèque (package) standard pour le calcul scientifique en Python. Son objet principal est le ndarray, un tableau multidimensionnel d'un seul type de données qui peut être trié, remodelé, soumis à des opérations mathématiques et à une analyse statistique. Les opérations et les algorithmes mathématiques implémentés en Numpy  présentent deux principaux avantages par rapport aux objets standards de Python (les listes ou tuples).  Tout d'abord, ils sont implémentés en langage C précompilé et approchent ainsi la vitesse d'exécution d'un programme écrit en C lui-même; deuxièmement, NumPy prend en charge la vectorisation: une seule opération peut être effectuée sur un tableau entier, plutôt que de nécessiter une boucle explicite sur les éléments du tableau. Prenons par exemple la multiplication de deux listes de n nombres à 1D, a et b :

Python standard :

c = []
for i in range(n) :
                c.append(a[i]*b[i])

en utilisant les tableaux de Numpy :

c = a * b

La multiplication élément par élément est gérée par un code C optimisé et précompilé et est donc très rapide (beaucoup plus rapide pour n très grand que l’utilisation du code standard de Python). L'absence de boucles et d'indexations explicites rend le code plus propre, moins sujet aux erreurs et plus proche de la notation mathématique standard qu'il reflète.

Exercice : Ecrire un script python qui compare le temps de calcul de la multiplication de deux vecteurs de 106 éléments. Utiliser la fonction clock() ou time() du module time.

Solution : Temps Python Standard ≈ 0.59 seconds ; Temps Numpy ≈ 0.04 seconds

Toutes les fonctionnalités de Numpy sont implémentées dans la bibliothèque numpy et pour l’utiliser il est souhaitable de charger la bibliothèque dans le script python par :

import numpy as np

2- Méthodes de Base des tableaux

La classe des tableaux en Numpy est ndarray, qui consiste d’un tableau multidimensionnel d’élément indexés par un tuple d’entier. Contrairement aux listes et tuples du Python standard, les éléments d’un tableau Numpy ne peuvent pas être de types différents: chaque élément d'un tableau NumPy a le même type, qui est spécifié par un objet de type de données associé (dtype). Le tableau 1 résume les différents types de donnée dans Numpy.

Les dimensions d'un tableau NumPy sont appelées axes; le nombre d'axes d'un tableau est appellé rank (rang en français).

Type Numpy

Description

np.bool_

Booléen (True ou False)

np.int8

Entier de -128 à 127

np.int16

Entier de -32768 à 32767

np.int32

Entier de -2147483648 à 2147483647

np.int64

Entier de -9223372036854775808 à 9223372036854775807

np.uint8

Entier non signé de 0 à 255

np.uint16

Entier non signé de 0 à 65535

np.uint32

Entier non signé de 0 à 4294967295

np.uint64

Entier non signé de 0 à 18446744073709551615

np.float32

Nombre réel simple précision : ±1.175494351 × 10−38 à ± 3.4028235 × 1038

np.float64

Nombre réel double précision : ±2.2250738585072014×10−308 à ±1.7976931348623157×10308

np.complex64

Nombre complexe représenté par deux nombres réels simples précisions (float32)

np.complex128

Nombre complexe représenté par deux nombres réels doubles précisions (float64)

Exemple :

>>> import numpy as np
>>> x = np.float32(1.0)
>>> x
1.0
>>> y = np.int_([1,2,4])
>>> y
array([1, 2, 4])
>>> z = np.arange(3, dtype=np.uint8)
>>> z
array([0, 1, 2], dtype=uint8)

 

Modifié le: dimanche 22 mars 2020, 13:46