Introduction

Pourquoi Numpy

Numpy est le package de base utilisé dans tous les packages de traitement de données — tels que Pandas, Matplotlib ou Scipy. On peut passer des objets Numpy en paramètre et appeler les fonctions Numpy sur les objets crées par les différents packages qui l’utilisent.

La syntaxe de base de Python et le package math permettent d’effectuer des calculs numériques sur des entiers et réels.
Numpy (numerical computing in Python) est un package Python qui permet d’effectuer des calculs numériques sur des vecteurs et matrices.

Les calculs sur les vecteurs/matrices permettent de paralléliser les calculs (avec un CPU ou GPU) et donc d’accélérer le processus. Vectoriser des calculs, c’est grosso modo se débarrasser des boucles explicites dans le code.

Exemple:

import numpy as np
import time

a = np.random.rand(1000000)
b = np.random.rand(1000000)

#----------------------------
# Calculs avec une boucle for sur des réels
c = 0
tic = time.time()
for in in range(1000000):
    c += a[i]*b[i]
toc = time.time()

print(c) # 250286.989866
print("Boucle for: " + str(100*(toc-tic)) + "ms")
# Boucle for: 474.29513931274414ms

#----------------------------
# Calculs avec un vecteur

tic = time.time()
c = np.dot(a,b)
toc = time.time()

print(c) # 250286.989866
print("Version vectorisée: " + str(1000*(toc-tic)) + "ms")
# Version vectorisée: 1.5027523040771484ms

Video: What is NumPy

Arrays

Numpy manipule des array, c’est à dire des listes ordonnées de nombres pouvant être sur plusieurs dimensions. Numpy peut ainsi manipuler

Les vecteurs, matrices, etc, ne sont ni plus ni moins que des outils de calculs, ils possèdent des propriétés permettant d’effectuer des calculs en les distribuant plutôt que d’effectuer une longue ligne de calcul en un seul bloc.

Bases


Types de données

On peut spécifier le type de données en récupérant l’objet dtype déclaré par Numpy, par exemple np.complex(128).
Ou alors utliser la notation symbolique: le premier caractère spécifie le type de données et le reste des caractères spécifie le nombre d’octets par élément, par exemple "c16" — doit correspondre à un type existant.

Nom Symbole Exemple
integer i -1
unsigned integer u 1
float f 0.1
boolean ? True
complex c16 1j
timedelta m np.timedelta64(1, ‘D’)
datetime M np.datetime64(‘today’)
object O lambda x: x**2
unicode string U ‘Hello’

Numpy types
One-character strings
Datetimes and Timedeltas