1-Numpy Python
1-Numpy Python
Achref El Mouelhi
Python
NumPy : Numerical Python
librairie Python dédiée aux tableaux (très utilisés en science de données : Data
Science)
open-source
I c
EL H
créée en 2005 par Travis Oliphant
U
écrite partiellement en Python (lesL MO
écrites en C ou C++)
ref E parties nécessitant des calculs rapides sont
c h
c A
Python
NumPy : Numerical Python
librairie Python dédiée aux tableaux (très utilisés en science de données : Data
Science)
open-source
I c
EL H
créée en 2005 par Travis Oliphant
U
écrite partiellement en Python (lesL MO
écrites en C ou C++)
ref E parties nécessitant des calculs rapides sont
c h
c A
NumPy, pourquoi ?
un accès jusqu’à 50 fois plus rapide que les listes, tuples... de Python : NumPy
stocke les valeurs dans un espace mémoire continu
Python
c
E LHI
Documentation officielle
U
https://numpy.org/
L MO
f E
c hre
c A
Python
Démarche
I c
H
EL espace de travail
Créez un répertoire cours-numpy dans votre
O U
Lancez VSC et allez dans FileM
fE L > Open Folder... et
choisissez cours-numpy
h r e
c créez un fichier main.py
c A
Dans cours-numpy,
Python
Pour installer NumPy, lancez la commande
pip install numpy
c
E LHI
U
L MO
f E
c hre
c A
Python
Pour installer NumPy, lancez la commande
pip install numpy
I c
H
ELl’alias np)
U
Pour utiliser NumPy, il faut l’importer (ici sous
import numpy as np
L MO
h r e fE
c
c A
Python
Pour installer NumPy, lancez la commande
pip install numpy
I c
H
ELl’alias np)
U
Pour utiliser NumPy, il faut l’importer (ici sous
import numpy as np
L MO
h r e fE
A c
c
Pour afficher la version de NumPy
import numpy as np
print(np.__version__)
# affiche 1.19.1
Python
Pour créer un tableau
import numpy as np
c
HI
print(tab)
# affiche [1 2 3 4 5]
U E L
L MO
f E
c hre
c A
Python
Pour créer un tableau
import numpy as np
c
HI
print(tab)
# affiche [1 2 3 4 5]
U E L
L MO
f E
Pour déterminer la taille (le nombre d’éléments)
c hre
c A
print(len(tab))
# affiche 5
Python
Pour créer un tableau
import numpy as np
c
HI
print(tab)
# affiche [1 2 3 4 5]
U E L
L MO
f E
Pour déterminer la taille (le nombre d’éléments)
c hre
c A
print(len(tab))
# affiche 5
print(type(tab))
# affiche <class ’numpy.ndarray’>
Python
Explication
I c
EL
ndarray : type de tableau défini par NumPy
H
U
O ètre une liste Python (à
La méthode array() accepteL Mparam
en
r e
plusieurs dimensions)
h fE
ou un tuple et retourne un ndarray.
c
A tableau = nombre d’imbrication
c d’un
Dimension
Python
c
E LHI
U
L MO
f E
c hre
c A
Python
I c
H
ELle premier tableau
La fonction len retourne le nombre d’éléments : ici 2 car
U
MO
contient deux sous-tableaux
print(len(tab2))
fE L
# affiche 2
c h r e
c A
Python
I c
H
ELle premier tableau
La fonction len retourne le nombre d’éléments : ici 2 car
U
MO
contient deux sous-tableaux
print(len(tab2))
fE L
# affiche 2
c h r e
c A
La propriété size retourne le nombre total d’éléments
print (tab2.size)
# affiche 10
Python
Python
Python
Pour créer un tableau à trois dimensions (3 nivaux d’imbrications)
c
E LHI
U
L MO
f E
c hre
c A
Python
Pour créer un tableau à trois dimensions (3 nivaux d’imbrications)
I c
La fonction len retourne le nombre d’éléments : ici 2E
L H
U car le premier tableau
contient deux sous-tableaux
L MO
print(len(tab3))
h r e fE
# affiche 2
c
c A
Python
Pour créer un tableau à trois dimensions (3 nivaux d’imbrications)
I c
La fonction len retourne le nombre d’éléments : ici 2E
L H
U car le premier tableau
contient deux sous-tableaux
L MO
print(len(tab3))
h r e fE
# affiche 2
c
c A
Pour connaı̂tre le nombre de dimensions, on utilise ndim
print(tab3.ndim)
# affiche 3
Python
Attention, le tableau suivant a 3 éléments et 2 dimensions
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(len(array))
c
# affiche 3
E LHI
U
MO
print(array.ndim)
# affiche 2
f E L
c hre
c A
Python
Attention, le tableau suivant a 3 éléments et 2 dimensions
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(len(array))
c
# affiche 3
E LHI
U
MO
print(array.ndim)
# affiche 2
f E L
A c hre
c
Pour créer un ndarray à partir d’un tuple
tup = np.array((1, 2, 3))
print(len(tup))
# affiche 3
Python
I c
Remarques
EL H
O U
Un ndarray contenant un seul élément (np.array(4) par
exemple) est de dimension 0L M
Chaque élémenth r e fE
c d’un ndarray est de dimension 0
c A
Python
Python
Types de données autorisés par NumPy
i - integer
b - boolean
c
u - unsigned integer
E LHI
f - float
U
c - complex float
L MO
f E
hre
m - timedelta
c
M - datetime
O - object
c A
S - string : chaı̂ne + codage (utf-8 par exemple)
...
Python
c
print(tab.dtype)
# affiche int32 (32 bits = 4 octets)
E LHI
U
L MO
f E
c hre
c A
Python
c
print(tab.dtype)
# affiche int32 (32 bits = 4 octets)
E LHI
U
L MO
f E
red’octets
c h
Pour préciser le nombre
c A 2, 3, 4, 5], dtype=’i8’)
tab = np.array([1,
print(tab.dtype)
# affiche int64
print(tab.dtype)
# affiche |S1
c
E LHI
U
L MO
f E
c hre
c A
print(tab.dtype)
# affiche |S1
c
Ou en utilisant la méthode astype
E LHI
tab = np.array([1, 2, 3, 4, 5])
U
MO
strings = tab.astype(’S’)
print(strings.dtype)
f E L
# affiche |S11
c hre
c A
print(tab.dtype)
# affiche |S1
c
Ou en utilisant la méthode astype
E LHI
tab = np.array([1, 2, 3, 4, 5])
U
MO
strings = tab.astype(’S’)
print(strings.dtype)
f E L
# affiche |S11
c hre
c A
Ou
tab = np.array([1, 2, 3, 4, 5])
strings = tab.astype(str)
print(strings.dtype)
# affiche |U11
Python
I c
Remarques
H
L être convertie.
Epeut
O
Une exception sera levée si une valeurUne
L M
r e Epeut préciser la taille sont i, u, f, S et
Les types pour lesquelsf on
U.
A ch
c
t = np.arange(15)
print(t)
# affiche [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
c
E LHI
U
L MO
f E
c hre
c A
t = np.arange(15)
print(t)
# affiche [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
c
arange([start, ]stop, [step, ]dtype=None)
E LHI
U
Valeur par défaut pour start est 0
L MO
f E
hre
Valeur par défaut pour step est 1
c
c A
t = np.arange(15)
print(t)
# affiche [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
c
arange([start, ]stop, [step, ]dtype=None)
E LHI
U
Valeur par défaut pour start est 0
L MO
f E
hre
Valeur par défaut pour step est 1
c
c A
Pour générer 15 valeurs incrémentales commençant de 1
t = np.arange(1, 16, 1)
print(t)
# affiche [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
print(t2)
# affiche [[ 1 2 3 4 5] [ 6 7 8 9 10] [11 12 13 14 15]]
c
E LHI
U
L MO
f E
c hre
c A
print(t2)
# affiche [[ 1 2 3 4 5] [ 6 7 8 9 10] [11 12 13 14 15]]
c
HI
Pour générer 12 valeurs incrémentales pour un tableau à trois dimensions
t3 = np.arange(1, 13, 1).reshape(3, 2, 2)
U E L
print(t3)
L MO
# affiche [[[ 1 2] [ 3
f E
4]] [[ 5 6] [ 7 8]] [[ 9 10] [11 12]]]
c hre
c A
print(t2)
# affiche [[ 1 2 3 4 5] [ 6 7 8 9 10] [11 12 13 14 15]]
c
HI
Pour générer 12 valeurs incrémentales pour un tableau à trois dimensions
t3 = np.arange(1, 13, 1).reshape(3, 2, 2)
U E L
print(t3)
L MO
# affiche [[[ 1 2] [ 3
f E
4]] [[ 5 6] [ 7 8]] [[ 9 10] [11 12]]]
c hre
c A
Si les valeurs passées pour les paramètres ne permettent pas de créer le tableau, une
exception sera levée
t3 = np.arange(1, 13, 1).reshape(3, 2, 3)
print(t3)
# affiche ValueError: cannot reshape array of size 12 into shape
(3,2,3)
Python
La méthode reshape() accepte aussi comme paramètre un tableau de
dimension différente
t = np.arange(1, 13, 1)
t3 = t.reshape(3, 2, -1)
I c
print(t3)
# affiche [[[ 1 H
EL [[ 9 10] [11
2] [ 3 4]] [[ 5 6] [ 7 8]]
U
MO
12]]]
fE L
h r e
c Ac
Python
La méthode reshape() accepte aussi comme paramètre un tableau de
dimension différente
t = np.arange(1, 13, 1)
t3 = t.reshape(3, 2, -1)
I c
print(t3)
# affiche [[[ 1 H
EL [[ 9 10] [11
2] [ 3 4]] [[ 5 6] [ 7 8]]
U
MO
12]]]
fE L
c h r e
c A la valeur -1 (une seule fois) pour que NumPy calcule le
On peut aussi utiliser
nombre manquant
print(t3)
# affiche [[[ 1 2] [ 3 4]] [[ 5 6] [ 7 8]] [[ 9 10] [11
12]]]
Python
Python
Pour créer un tableau et l’initialiser avec des zéros (réels)
zeros = np.zeros(3)
print(zeros)
# affiche [ 0. 0. 0.]
c
E LHI
U
L MO
f E
c hre
c A
Python
Pour créer un tableau et l’initialiser avec des zéros (réels)
zeros = np.zeros(3)
print(zeros)
# affiche [ 0. 0. 0.]
c
E LHI
U
Pour créer un tableau et l’initialiser avec des zéros (entiers)
zeros = np.zeros(3, dtype=np.int32)
L MO
f E
print(zeros)
c hre
c A
# affiche [ 0 0 0]
Python
Pour créer un tableau et l’initialiser avec des zéros (réels)
zeros = np.zeros(3)
print(zeros)
# affiche [ 0. 0. 0.]
c
E LHI
U
Pour créer un tableau et l’initialiser avec des zéros (entiers)
zeros = np.zeros(3, dtype=np.int32)
L MO
f E
print(zeros)
c hre
c A
# affiche [ 0 0 0]
print(zeros)
# affiche [[0 0] [0 0] [0 0]]
Python
c
ones
E LHI
OU
fonctionne exactement comme zeros
M
retourne un tableau def1 E
L
c h re
c A
Python
U E L
MO
print(iden)
# affiche
f E L
hre
# [
c
c A
# [1. 0.]
# [0. 1.]
# ]
Python
U E L
MO
print(oeil)
# affiche
f E L
hre
# [
c
c A
# [1. 0.]
# [0. 1.]
# ]
Python
U E L
MO
print(oeil)
# affiche
f E L
hre
# [
c
c A
# [1. 0. 0.]
# [0. 1. 0.]
# ]
Python
Python
Pour générer les valeurs d’un tableau à partir d’une fonction lambda
fonction = np.fromfunction(lambda i, j: i + j, (3, 2)) c
E LHI
print(fonction)
U
# affiche
L MO
# [
f E
# [0. 1.]
c hre
c A
# [1. 2.]
# [2. 3.]
# ]
print(tab[0])
# affiche 1
c
E LHI
U
L MO
f E
c hre
c A
print(tab[0])
# affiche 1
c
dimensions
E LHI
Pour accéder au deuxième élément de la deuxième dimension d’un tableau à deux
U
tab2 = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
L MO
f E
hre
print(tab2[0, 1])
# affiche 2
c
c A
print(tab[0])
# affiche 1
c
dimensions
E LHI
Pour accéder au deuxième élément de la deuxième dimension d’un tableau à deux
U
tab2 = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
L MO
f E
hre
print(tab2[0, 1])
# affiche 2
c
c A
Pour accéder au deuxième élément du premier tableau défini dans le deuxième tableau
tab3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(tab3[1, 0, 1])
# affiche 8
Python
print(tab[-1])
I c
# affiche 5
EL H
O U
tab2 = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
L M
print(tab2[-1, -3])
h r e fE
# affiche 8
A c
c
tab3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11,
12]]])
print(tab3[1, 0, -2])
# affiche 8
Python
Démarche
c
HI
Pour extraire un sous tableau, on utilise l’opérateur
[deb:fin:pas] ou [deb:fin]
U E L
deb, fin et pas sont optionnelsMO
EL
defdeb est 0
La valeur par défautre
A c h
c par défaut de fin est la taille du tableau
La valeur
La valeur par défaut de pas est 1
Python
Exemples
print(tab[1])
c
# affiche 2
E LHI
U
MO
print(tab[1:])
# affiche [2 3 4 5]
f E L
print(tab[1:4])
Ac
# affiche [2 3 4] hre
c
print(tab[1:4:2])
# affiche [2 4]
print(tab[1::2])
# affiche [2 4]
Python
Exemples avec un tableau à deux dimensions
print(tab2[0:2, 2:5])
c
# affiche [[ 3 4 5] [ 8 9 10]]
E LHI
U
MO
print(tab2[0:2, 2])
# affiche [3 8]
f E L
print(tab2[1, 2:5])
Ac
# affiche [ 8 9 10] hre
c
print(tab2[0:2, 2:5:2])
# affiche [[ 3 5] [ 8 10]]
print(tab2[0:1, 1::2])
# affiche [[2 4]]
Python
Python
Python
Pour accéder à tous les éléments
U E L
# affiche
L MO
# 1
f E
hre
# 2
# 3
c
#
#
4
5 c A
# 6
# 7
# 8
# 9
# 10
Python
Par analogie, pour un tableau à 3 dimensions, il faut 3 boucles for
tab3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
for x in tab3:
for y in x:
c
HI
for z in y:
print(z)
U E L
MO
# affiche
#
#
1
2
f E L
# 3
c hre
c A
# 4
# 5
# 6
# 7
# 8
# 9
# 10
# 11
# 12
Python
NumPy nous offre une syntaxe plus simple pour simplifier le code précédent quelle que
soit la dimension du tableau
tab3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
for x in np.nditer(tab3):
c
print(x)
E LHI
# affiche
U
# 1
L MO
# 2
f E
hre
# 3
# 4
c
c A
# 5
# 6
# 7
# 8
# 9
# 10
# 11
# 12
Python
Python
Exemple avec un tableau à deux dimensions
E LHI
U
MO
# affiche
# (0, 0) 1
# (0, 1) 2
f E L
# (0, 2) 3
c hre
c A
# (0, 3) 4
# (0, 4) 5
# (1, 0) 6
# (1, 1) 7
# (1, 2) 8
# (1, 3) 9
# (1, 4) 10
Python
Considérons les deux tableaux (à une dimension) suivants
a = np.arange(1, 6)
b = np.arange(1, 10, 2)
c
E LHI
U
L MO
f E
c hre
c A
Python
Considérons les deux tableaux (à une dimension) suivants
a = np.arange(1, 6)
b = np.arange(1, 10, 2)
r = a + b
c
HI
print(a, b, r)
# affiche [1 2 3 4 5] [1 3 5 7 9] [ 2 5 8 11 14]
U E L
MO
r = a - b
print(a, b, r)
f E L
# affiche [1 2 3 4 5] [1 3 5 7 9] [ 0 -1 -2 -3 -4]
hre
r = a * b
print(a, b, r)
c
c A
# affiche [1 2 3 4 5] [1 3 5 7 9] [ 1 6 15 28 45]
r = a / b
print(a, b, r)
# affiche [1 2 3 4 5] [1 3 5 7 9] [1. 0.66666667 0.6 0.57142857 0.55555556]
r = a * 2
print(a, r)
# affiche [1 2 3 4 5] [ 2 4 6 8 10]
r = a ** 2
print(a, r)
# affiche 1 2 3 4 5] [ 1 4 9 16 25]
Python
Attention pour les tableaux à deux dimensions ou plus, le produit ne correspond pas au
produit de deux matrices
a2 = np.arange(1,5).reshape(2, 2)
b2 = np.arange(3,7).reshape(2, 2)
print (a2)
# affiche [[1 2] [3 4]]
c
HI
print (b2)
# affiche [[3 4] [5 6]]
U E L
print (a2 * b2)
# affiche [[ 3 8] [15 24]]
L MO
f E
c hre
c A
Attention pour les tableaux à deux dimensions ou plus, le produit ne correspond pas au
produit de deux matrices
a2 = np.arange(1,5).reshape(2, 2)
b2 = np.arange(3,7).reshape(2, 2)
print (a2)
# affiche [[1 2] [3 4]]
c
HI
print (b2)
# affiche [[3 4] [5 6]]
U E L
print (a2 * b2)
# affiche [[ 3 8] [15 24]]
L MO
f E
c hre
c A
Pour faire le produit de deux matrices, on utilise l’opérateur @ (valable depuis Python 3.5)
print (a2)
# affiche [[1 2] [3 4]]
print (b2)
# affiche [[3 4] [5 6]]
Python
Python
c
HI
Il est possible d’appliquer une fonction sur tous les éléments
d’un tableau
U E L
print(np.sqrt((a)))
L MO
# affiche [1.
f E
1.41421356 1.73205081 2.
2.23606798]
c hre
c A
Python
Autres fonctions
c
HI
sum : retourne la somme de tous les éléments d’un tableau
U E L
MO
diff : retourne le tableau de différence entre chaque élément et son successeur
L
max : retourne le max d’un tableau
f E
c hre
maximum : retourne un tableau de tous les max en comparant les éléments ayant le même indice
c A
all : vérifie si tous les éléments d’un tableau respectent une condition
any : vérifie s’il existe un élément d’un tableau respectant une condition
sort : retourne un tableau trié quel que soit le type de ses données
...
Python
Python
Python
Python
Python
Pour vérifie si tous les éléments d’un tableau vérifient une condition
print(np.all(a % 2 == 0))
# affiche False
c
E LHI
U
L MO
f E
c hre
c A
Python
Pour vérifie si tous les éléments d’un tableau vérifient une condition
print(np.all(a % 2 == 0))
# affiche False
c
E LHI
U
MO
Pour vérifie s’il existe un élément du tableau vérifient une condition
print(np.any(a % 2 == 0))
f E L
hre
# affiche True
c
c A
Python
Pour vérifie si tous les éléments d’un tableau vérifient une condition
print(np.all(a % 2 == 0))
# affiche False
c
E LHI
U
MO
Pour vérifie s’il existe un élément du tableau vérifient une condition
print(np.any(a % 2 == 0))
f E L
hre
# affiche True
c
c A
Pour retourner le tableau de différence entre chaque élément et son successeur
print(np.diff(b))
# affiche [2 2 2 2]
Python
Considérons la matrice suivante
a2 = np.arange(1,5).reshape(2, 2)
print (a2)
# affiche [[1 2] [3 4]]
c
E LHI
U
L MO
f E
c hre
c A
Python
Considérons la matrice suivante
a2 = np.arange(1,5).reshape(2, 2)
print (a2)
# affiche [[1 2] [3 4]]
c
E LHI
U
Pour déterminer le transposé de a2
L MO
f E
print (a2.transpose())
c hre
c A
# affiche [[1 3] [2 4]]
Python
Considérons la matrice suivante
a2 = np.arange(1,5).reshape(2, 2)
print (a2)
# affiche [[1 2] [3 4]]
c
E LHI
U
Pour déterminer le transposé de a2
L MO
f E
print (a2.transpose())
c hre
c A
# affiche [[1 3] [2 4]]
print (a2.trace())
# affiche 5
Python
Explication
I c
H
Affectation : permet d’avoir un deuxième nom pour le même
EL
tableau
U
Vue : permet de créer un deuxiL MO
ème tableau dont les valeurs
re
pointent sur les mêmes f E
valeurs du tableau précédent
c h
A de créer un tableau avec un espace mémoire
Copie :c permet
différent pour les valeurs
Python
b = a c
E LHI
b[2] = 10
U
L MO
print(a)
f E
# affiche [ 1
c hre
2 10]
print(b is a) c A
# affiche True
print(id(a), id(b))
# affiche 58092304 58092304
Python
c = a.view() c
E LHI
c[2] = 10
U
L MO
print(a)
f E
# affiche [ 1
c hre
2 10]
print(c is a) c A
# affiche False
print(id(a), id(c))
# affiche 51800928 51801488
Python
c
E LHI
U
L MO
f E
c hre
c A
(Image de StackOverFlow)
H & H: Research and Training 56 / 72
Affectation, copie et vue Copie
Python
d = a.copy() c
E LHI
d[2] = 10
U
L MO
print(a)
f E
# affidhe [ 1
c hre
2 3]
print(d is a) c A
# affidhe False
print(id(a), id(d))
# affidhe 17984272 17984832
Python
print(m2)
c A
# affiche [[5 6] [7 8]]
Python
Pour fusionner les deux tableaux et obtenir un tableau à deux
dimensions contenant les éléments du premier tableau ensuite le
second
m = np.concatenate((m1, m2))
c
E LHI
OU
print(m)
L M
# affiche [[1 2] [3 4] [5 6] [7 8]]
h r e fE
c
c A
Python
Pour fusionner les deux tableaux et obtenir un tableau à deux
dimensions contenant les éléments du premier tableau ensuite le
second
m = np.concatenate((m1, m2))
c
E L HI
OU
print(m)
# affiche [[1 2] [3 4] [5 6]
L M [7 8]]
h r e fE
Acest un raccourci du code suivant
cédent
Le code préc
m = np.concatenate((m1, m2), axis=0)
print(m)
# affiche [[1 2] [3 4] [5 6] [7 8]]
Python
c
print(m)
[3 4 7 8]] EL
HI
OU
# affiche [[1 2 5 6]
M
h re f EL
A c
c
Python
c
print(m)
[3 4 7 8]] EL
HI
OU
# affiche [[1 2 5 6]
M
h re f EL
c
Pour fusionner et obtenir un tableau à une seule dimension
A
c
m = np.concatenate((m1, m2), axis=None)
print(m)
# affiche [1 2 3 4 5 6 7 8]
Python
c
HI
print(m)
# affiche [[[1 2] [3 4]] [[5 6] [7 8]]]
U E L
L MO
f E
c hre
c A
Python
c
HI
print(m)
# affiche [[[1 2] [3 4]] [[5 6] [7 8]]]
U E L
L MO
f E
re de de même indice dans un tableau
h
Pour fusionner les éléments
c
ensemble
c A
m = np.stack((m1, m2), axis=1)
print(m)
# affiche [[[1 2] [5 6]] [[3 4] [7 8]]]
Python
Python
Python
c
HI
Pour fusionner selon la profondeur
m = np.dstack((m1, m2))
U E L
L MO
print(m)
f E
c hre
# affiche [[[1 5] [2 6]] [[3 7] [4 8]]]
c A
Python
c
HI
Pour construire un nouveau tableau par bloc
m = np.block([m1, m2])
U E L
L MO
print(m)
f E
c hre
# affiche [[1 2 5 6] [3 4 7 8]]
c A
Python
Ou sous forme d’un tableau à plusieurs dimensions
m = np.block(
[
[m1, np.zeros((2, 2), dtype=np.int32)],
c
[np.ones(4, dtype=np.int32)],
E LHI
[np.zeros((2, 2), dtype=np.int32), m2]
U
]
L MO
)
f E
c hre
print(m)
# affiche
c[[1A2 0 0]
# [3 4 0 0]
# [1 1 1 1]
# [0 0 5 6]
# [0 0 7 8]]
Python
Pour décomposer un tableau en plusieurs sous-tableaux, on peut
utiliser la méthode array split
t = np.arange(1, 11)
c
print (np.array_split(t, 2))
# affiche [
E LHI
U
#
#
array([1, 2, 3, 4, 5]),
array([ 6, 7, 8, 9, 10])
L MO
f E
hre
# ]
c
c A
print (np.array_split(t, 3))
# affiche [
# array([1, 2, 3, 4]),
# array([5, 6, 7]),
# array([ 8, 9, 10])
# ]
Python
t2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14,
15], [16, 17, 18]])
c
print(np.array_split(t2, 3))
E LHI
# affiche [array([[1, 2, 3],
U
MO
# [4, 5, 6]]), array([[ 7, 8, 9],
#
# [16, 17, 18]])]
f E L
[10, 11, 12]]), array([[13, 14, 15],
c hre
c A
print(np.array_split(t2, 2))
# affiche [array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]]), array([[10, 11, 12],
# [13, 14, 15],
# [16, 17, 18]])]
Python
Python
I c
Remarque
E LH
U
MOhstack,vstack et dstack
Comme pour stack et ses variantes
L
r e f Eet dsplit
Il existe hsplit, vsplit
h
c
c A
Python
f E L
c hre
c A
Python
f E L
c hre
c A
Si on a besoin de valeurs, on peut définir un tableau de booléens
filtre = [True, False, True, False, True]
print(tab[filtre])
# affiche [1 3 5]
Python
On peut aussi utiliser where pour construire le filtre (tableau de
booléens)
filtre = np.where(tab % 2 != 0, True, False)
c
print(tab[filtre])
E LHI
# affiche [1 3 5]
U
# (array([0, 2, 4], dtype=int32),)
L MO
f E
c hre
c A
Python
On peut aussi utiliser where pour construire le filtre (tableau de
booléens)
filtre = np.where(tab % 2 != 0, True, False)
c
print(tab[filtre])
E LHI
# affiche [1 3 5]
U
# (array([0, 2, 4], dtype=int32),)
L MO
f E
c hre
Ou sans le where c A
filtre = tab % 2 != 0
print(tab[filtre])
# affiche [1 3 5]