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
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
Nombre total de valeurs
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 :
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)
|
À 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
Indice de la valeur maximale
Valeur minimale
Indice de la valeur minimale
Tri des valeurs
Indices du vecteur trié
Vecteur constitué de valeurs toutes différentes
Calculs sur les vecteurs
Moyenne
Médiane
Variance
Quantile
1
|
print(np.percentile(tab, 50))
|
Somme
Somme cumulée
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)
|