### Exercice : indexation des tableaux en Numpy ############################################### import numpy as np # Tous les passages indiqués "TODO()" sont à remplacer par vos soins def TODO(): print("à vous!") exit() # Définition d'un array Numpy A = np.array([ -4, -32, 25, -15, -12, -23, 4, -3, -17, 47, -40, 20, 11, -6, 44, -47, 42, 26, -5, 46, 47, 34, 28, 47, 38, -42, 5, -39, -28, 29]) print("A=",A) print("len(A)=",len(A)) #B = np.array([ 4, 6, 8, 9, 2, 1, 19, 101, 115, 12, 112, 2059, 500, 13, # 15, 805, 6077, 6070, 303, 200, 80, 70, 60, 50, 40, 30, 25, 76, 77, 78]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ ### SLICING # Le slicing permet d'accéder à une sous-partie d'une liste ou d'un tuple # (objets Python standards) ou d'un array (objet Numpy). # Il prend la forme générale # DEBUT:FIN:PAS # qui signifie : tous les éléments depuis l'indice DEBUT (inclus) jusqu'à # l'indice FIN (exclus) en prenant un élément tous les PAS. print("======= Exemple de slicing : A[3:14:2] ") print(A[3:14:2]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ # Si PAS est omis, il vaut 1 (on prend les éléments de 1 en 1) print("Affichez tous les éléments de l'index 3 (inclus) à 14 (exclus).") print(A[3:14]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ # Si DEBUT est omis, il vaut 0 (on part depuis le début du tableau) print("Affichez 1 élément sur 2, depuis le début et jusqu'à l'index 12 INCLUS") print(A[:13:2]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ # Si FIN est omis, on va jusqu'au bout du tableau print("Affichez 1 élément sur 3, depuis l'index 4 (inclus) jusqu'à la fin.") print(A[4::3]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ # Si DEBUT et/ou FIN sont négatifs, ils indiquent une position en partant # de la fin du tableau (-1 est le dernier élément, -2 l'avant-dernier, etc.) print("Affichez les 10 derniers éléments de A.") print(A[-10::]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ print("\nAffichez 1 élément sur 3, en partant du début, et en vous arrêtant 10 éléments avant la fin du tableau.") print(A[:-9:3]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ # Si PAS est négatif, on lit les éléments dans le sens inverse. print("\nAffichez le tableau A à l'envers, depuis son dernier élément jusqu'au premier.") print(A[::-1]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ print("\nAffichez les 10 derniers éléments de A, à l'envers.") print(A[:-10:-1]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ ### INDEXATION PAR UNE LISTE D'INDICES (uniquement en Numpy) # En Numpy, on peut utiliser une LISTE (ou un autre ARRAY) de nombres entiers positifs # indiquant tous les emplacements qu'on souhaite lire dans le tableau. print("\n======= Exemple d'indexation par une liste :") print("A=",A) print("len(A)=",len(A)) indices = [1,3,4,5,10] print(indices) print(A[indices]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ print("\nExtrayez le sous-tableau de A donné par les indices qui sont un nombre au carré (0,1,4,9, etc.) :") carree = [0,1,4,9,16,25] print(carree) print(A[carree]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ ### INDEXATION PAR UN MASQUE BINAIRE (uniquement en Numpy) # En Numpy, on peut indexer des éléments de A à l'aide d'un autre array, de la même # taille que A, mais contenant des booléens indiquant si chaque index doit être # conservé (True) ou écarté (False) print("\n======= Exemple d'indexation par masque binaire:") print("A=",A) print("len(A)=",len(A)) test = A>0 print(test) print(A[test]) # exit() # -------------- Supprimez cette ligne pour passer à la suite ------------------ print("\nCréez un tableau B, de la même taille que A, dans lequel les nombres pairs sont conservés, mais les nombres impairs sont remplacés par des 0 :") B = A.copy() test1 = B%2==0 test2 = abs(B)%2!=0 B[test2] = 0 print(B) # Indice : utilisez la fonction np.mod