Utilisation de numpy pour créer et gérer des vecteurs



1
import numpy as np

Remarque : Différence avec R, les indices commencent à 0.

Création manuelle à partir d’un ensemble de valeurs

1
tab = np.array([1, 2, 2.5, 3.2, 1.8])

Type de la structure

1
print(type(tab))

Type des données

1
print(tab.dtype)  # float64

Nombre de dimensions

1
print(tab.ndim)  # 1 vecteur, 2 matrice

Nombre de lignes et de colonnes

1
print(tab.shape)

Nombre total de valeurs

1
print(tab.size)

Type des données

1
2
3
4
5
6
7
8
tab = np.array([1, 2, 4])
print(tab.dtype)  # int64

tab = np.array([1, 2, 4], dtype=float)
print(tab.dtype)  # float64

tab = np.array([False, True, False, False], dtype=bool)
print(tab.dtype)  # bool

Remarque : il est possible de créer des tableaux d’objets tels que les dictionnaires (dtype=object)

Création d’une séquence de valeurs

Suite arithmétique de raison 1

1
2
tab = np.arange(start=0, stop=10)
print(tab)

Suite arithmétique de raison step

1
2
tab = np.arange(start=0, stop=10, step=2)
print(tab)

Suite linéaire (nombre de valeurs fourni et point final est inclus)

1
2
tab = np.linspace(start=0, stop=10, num=11)
print(tab)

Vecteur de valeurs toutes égales à 1

1
2
tab = np.ones(shape=5)
print(tab)

Vecteur de valeurs toutes égales à 0

1
2
tab = np.zeros(5)
print(tab)

Vecteur de valeurs toutes égales à 3.2

1
2
tab = np.full(shape=5, fill_value=3.2)
print(tab)

Conversion d’une liste en vecteur

1
2
3
4
lst = [4, 5, 6, 16, 18, 48, 64]
print(lst)
tab = np.asarray(lst, dtype=float)
print(tab)

Nombres aléatoires

Création d’un vecteur d’entiers aléatoires

Pour size on peut utiliser un nombre à la place du tuple.
1
2
tab = np.random.randint(1, high=100, size=(1000,))
print(tab)

Création d’un vecteur de floats aléatoires compris entre 0 (inclus) et 1 (exclus)

1
2
tab = np.random.rand(1000)
print(tab)

Manipulation de fichiers

Chargement à partir d’un fichier

Remarque : Pas d’entête.

1
2
tab = np.loadtxt("vecteur.txt", dtype=float)
print(tab)

Sauvegarde d’un vecteur dans un fichier texte

1
2
3
lst = [np.random.randint(1, 10000) for i in range(1000)]
tab = np.asarray(lst, dtype=float)
np.savetxt("backup.txt", tab)

Redimensionnements

Ajout d’une valeur à la fin d’un tableau

1
2
3
tab = np.array([1, 2, 3, 4])
tab = np.append(tab, 5)  # Ne modifie pas en place le tableau mais crée un nouveau tableau
print(tab)

Suppression d’un élément

1
2
tab = np.delete(tab, 2)  # Ne modifie pas en place le tableau mais crée un nouveau tableau
print(tab)

Modification de la dimension (les nouvelles cases sont remplies par des 0)

1
2
tab.resize((10,))
print(tab)

Remarque : Autre écriture possible si vecteur :

1
tab.resize(10)

Concaténation de deux vecteurs

1
2
3
4
tab1 = np.random.rand(20)
tab2 = np.random.rand(15)
tab = np.append(tab1, tab2)
print(tab)

Filtrage - Extraction

À l’aide d’un vecteur de booléens

1
2
3
tab = np.array([1, 2, 3, 4])
cond = np.array([False, True, False, True])
print(tab[cond])
  • Si la longueur de cond trop petite, les valeurs qui manquent sont égales à False.
  • Si la longueur de cond trop grande, une exception est levée.

Une opération booléenne sur un vecteur retourne un vecteur de booléens

1
2
cond = tab > 2
print(cond)

Filtrage à l’aide d’une condition

1
2
new_tab = tab[tab > 2]
print(new_tab)

Fonctions accessibles

Si tab est défini par

1
tab = np.random.rand(1000)

Valeur maximale

1
print(np.max(tab))

Indice de la valeur maximale

1
print(np.argmax(tab))

Valeur minimale

1
print(np.min(tab))

Indice de la valeur minimale

1
print(np.argmin(tab))

Tri des valeurs

1
print(np.sort(tab))

Indices du vecteur trié

1
print(np.argsort(tab))

Vecteur constitué de valeurs toutes différentes

1
print(np.unique(tab))

Calculs sur les vecteurs

Moyenne

1
print(np.mean(tab))

Médiane

1
print(np.median(tab))

Variance

1
print(np.var(tab))

Quantile

1
print(np.percentile(tab, 50))

Somme

1
print(np.sum(tab))

Somme cumulée

1
print(np.cumsum(tab))

Calculs entre vecteurs

Principe : les calculs se font éléménts par éléments entre les vecteurs
1
2
3
4
5
6
7
8
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 2, 3, 4, 6])
z = x * y
u = x + y
v = x / y
w = x - y
t = x < y
print(z, u, v, w, t)

Fonctions matricielles

Produit scalaire

1
2
z = np.vdot(x, y)
print(z)

Calcul de la norme

1
2
3
4
5
6
n = np.linalg.norm(x)
print(n)

tab = np.array([2.1, 3.4, 6.7, 8.1, 3.5, 7.2])
tab = tab.reshape(2, 3)
print(tab.shape)
Numpy