# Exemple import numpy as np # Créer un vecteur h de 24 éléments h = np.arange(1, 25) # Créer un tableau Z de dimensions (3,4,2) Z = h.reshape((3, 4, 2)) print("Z :\n", Z) # Dimensions et taille print("dim(Z) :", Z.shape) print("length(Z) :", Z.size) print("nrow(Z) :", Z.shape[0]) print("ncol(Z) :", Z.shape[1]) ## 1. Création d'un tableau de zéros (équivalent à Z1 <- array(0, dim=c(3,4,2))) Z1 = np.zeros((3, 4, 2)) print("Tableau Z1 initial (zéros):") print(Z1) ## 2. Opérations arithmétiques élément par élément # Création de tableaux exemple A, B, C de mêmes dimensions (3,4,2) A = np.arange(1, 25).reshape(3, 4, 2) B = np.arange(2, 26).reshape(3, 4, 2) C = np.arange(3, 27).reshape(3, 4, 2) # Calcul D = 2*A*B + C + 1 (opération élément par élément) D = 2*A*B + C + 1 print("\nRésultat de D = 2*A*B + C + 1:") print(D) ## 3. Opérations sur Z1 # Ajout de 1 à chaque élément (Z1 = Z1 + 1) Z1 = Z1 + 1 print("\nZ1 après Z1 = Z1 + 1:") print(Z1) # Création de Z à partir de l'exemple précédent Z = np.arange(1, 25).reshape(3, 4, 2) # Somme de Z1 et Z (Z2 = Z1 + Z) Z2 = Z1 + Z print("\nRésultat de Z2 = Z1 + Z:") print(Z2) # Exemple avec apply() - en numpy, on utilise np.sum avec axis H = np.arange(1, 13).reshape((2, 3, 2)) print("H[0,1,1] :", H[0, 1, 1]) print("H[:,:,0] :\n", H[:, :, 0]) print("H[:,0,0] :", H[:, 0, 0]) print("H[0,:,0] :", H[0, :, 0]) # Somme selon les axes print("apply(H,1,sum) :", np.sum(H, axis=0)) print("apply(H,2,sum) :", np.sum(H, axis=1)) print("apply(H,3,sum) :", np.sum(H, axis=2)) #Somme sur la première dimension (équivalent à apply(H,1,sum)): [[ 8 10 12] [10 12 14]] #Somme sur la deuxième dimension (équivalent à apply(H,2,sum)): [[ 9 12] [27 30]] #Somme sur la troisième dimension (équivalent à apply(H,3,sum)): [[ 3 7 11] [15 19 23]] # Exercice import numpy as np # A) Création du tableau E de dimension (2,3,4) data1 = np.arange(1, 9) # 1:8 data2 = np.repeat(1, 8) # rep(1, 8) data3 = np.linspace(0, 1, num=8) # seq(0,1,len=8) E = np.array(data1.tolist() + data2.tolist() + data3.tolist()) E = E.reshape((2, 3, 4)) # tableau 3D de dimension (2,3,4) # Informations sur le tableau E print("Dimension de E:", E.shape) print("Nombre de lignes (axe 1):", E.shape[1]) print("Nombre de colonnes (axe 2):", E.shape[2]) # Première matrice (indice 0) print("Première matrice:\n", E[0]) # Première ligne de la deuxième matrice (indice 1) print("Première ligne de la 2e matrice:\n", E[1][0]) # Élément de la 1ère ligne, 2ème colonne de la 1ère matrice print("Élément [0,1] de la 1ère matrice:\n", E[0][0][1]) # Créer tableau de dimension (2,3,2) avec les données de 1 à 8 E2 = np.arange(1, 9).reshape((2, 3, 2)) print("Tableau E2 de dimension (2,3,2):\n", E2) # B) Création d'un autre tableau de mêmes dimensions pour tester opérations H = np.array([[ [2, 2], [2, 2], [2, 2] ], [ [3, 3], [3, 3], [3, 3] ]]) # Opérations arithmétiques print("Addition:\n", E2 + H) print("Multiplication:\n", E2 * H) # Opérations logiques print("E2 > H:\n", E2 > H) print("E2 == H:\n", E2 == H) # C) Utilisation de apply # Moyenne selon l'axe 1 (ligne) print("apply(H, 1, mean):\n", np.mean(H, axis=1)) # Moyenne selon l'axe 2 (colonne) print("apply(H, 2, mean):\n", np.mean(H, axis=2)) # Explication : # apply(H,1,mean) => Moyenne par ligne (donc pour chaque [i,:,:]) # apply(H,2,mean) => Moyenne par colonne (donc pour chaque [i,:,j])