Bonjour Philippe,
Les dimensions sont initialisées au moment de la déclaration de X
. En effet, l’argument shape = (32, 32, 3)
de np.zeros
indique que nous souhaitons un array
en 3 dimensions avec 32 lignes de 32 pixels et chacun de ces pixels est représenté par 3 éléments (pour la couleur RVB).
Par la suite, nous souhaitons parcourir notre array X
.
Pour que ce soit plus parlant, je vais prendre un exemple avec Y = np.zeros(shape = (2, 2, 3))
.
Comme la première dimension de Y
est 2, il faut considérer Y
comme une liste de 2 objets, Y
ressemble à ça : [*, *]
.
Donc pour parcourir Y
, il faut d’abord accéder à ses éléments les moins profonds, c’est à dire aux deux éléments de la première dimension (représentés par une *
).
Donc le code for ligne in Y:
créera une boucle à 2 itérations où ligne prendra la valeur du premier élément *
puis du 2e.
Nous avons à présent accès aux éléments *
par la variable ligne
. Or, comme la 2e dimension de Y
est 2, cela signifie que ligne
est une liste de 2 objets, ligne ressemble à ça : [#, #]
.
Donc le code for pixel in ligne:
créera une boucle à 2 itérations où pixel
prendra la valeur du premier élément #
puis du 2e.
Nous avons enfin accès aux élément #
par la variable pixel
. Or, comme la 3e dimension de Y
est 3 et que Y
ne contient que des 0, cela signifie que pixel
est une liste de 3 objets, pixel
ressemble à ça : [0, 0, 0]
.
Donc le code for canal in pixel:
créera une boucle à 3 itérations où canal prendra la valeur 0, puis la valeur 0 et enfin la valeur 0.
Cet exemple avec Y
représente tout à fait ce qu’il se passe avec X
de dimension (32, 32, 3)
.
J’espère avoir répondu à votre question.
Bonne journée
Antoine