Skip to content

Dans NumPy, la fonction 𝐧‌𝐩‌.𝐚‌𝐩‌𝐩‌𝐞‌𝐧‌𝐝‌() vous permet d’ajouter des valeurs (éléments, lignes ou colonnes) à la fin ou au début d’un tableau ( 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ ).

Notez que 𝐚‌𝐩‌𝐩‌𝐞‌𝐧‌𝐝‌() n’est pas fourni comme méthode de 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ .

Consultez l’article suivant pour savoir comment concaténer plusieurs tableaux.

Utilisez 𝐧‌𝐩‌.𝐢‌𝐧‌𝐬‌𝐞‌𝐫‌𝐭‌() pour insérer des valeurs à n’importe quelle position, pas seulement à la fin ou au début.

La version de NumPy utilisée dans cet article est la suivante. Notez que les fonctionnalités peuvent varier selon les versions.

import numpy as np print(np.__version__) # 1.26.1 

Utilisation de base de 𝐧‌𝐩‌.𝐚‌𝐩‌𝐩‌𝐞‌𝐧‌𝐝‌()

Ajouter des éléments à la fin

Pour démontrer l’utilisation de base de 𝐧‌𝐩‌.𝐚‌𝐩‌𝐩‌𝐞‌𝐧‌𝐝‌() , utilisez un tableau unidimensionnel comme exemple.

Spécifiez le tableau d’origine comme premier argument et la valeur à ajouter comme deuxième. La fonction renvoie un nouveau tableau, laissant le tableau d’origine inchangé.

a = np.arange(3) print(a) # [0 1 2] a_append = np.append(a, 3) print(a_append) # [0 1 2 3] print(a) # [0 1 2] 

Les premier et deuxième arguments peuvent être n’importe quel objet de type tableau, tel qu’un 𝐥‌𝐢‌𝐬‌𝐭‌ ou un 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ . La valeur de retour est toujours un 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ .

print(np.append(a, [3, 4, 5])) # [0 1 2 3 4 5] print(np.append(a, np.arange(3, 6))) # [0 1 2 3 4 5] 

Ajouter des éléments au début

Pour ajouter des valeurs au début au lieu de la fin, échangez les premier et deuxième objets d’argument.

a = np.arange(3) print(a) # [0 1 2] print(np.append(-1, a)) # [-1 0 1 2] print(np.append([-3, -2, -1], a)) # [-3 -2 -1 0 1 2] print(np.append(np.arange(-3, 0), a)) # [-3 -2 -1 0 1 2] 

𝐧‌𝐩‌.𝐚‌𝐩‌𝐩‌𝐞‌𝐧‌𝐝‌() avec des tableaux à deux dimensions

Ajouter des lignes/colonnes en spécifiant l’argument 𝐚‌𝐱‌𝐢‌𝐬‌

Par défaut, lorsque le premier argument est un tableau à deux dimensions, il est aplati à une dimension, puis les valeurs du deuxième argument lui sont ajoutées.

a_2d = np.arange(6).reshape(2, 3) print(a_2d) # [[0 1 2] # [3 4 5]] print(np.append(a_2d, 10)) # [ 0 1 2 3 4 5 10] 

De même, si le deuxième argument est un tableau, il est également aplati. Les premier et deuxième arguments sont alors concaténés en un seul tableau unidimensionnel.

a_2d_ex = np.arange(6).reshape(2, 3) * 10 print(a_2d_ex) # [[ 0 10 20] # [30 40 50]] print(np.append(a_2d, a_2d_ex)) # [ 0 1 2 3 4 5 0 10 20 30 40 50] 

Pour ajouter des tableaux tout en préservant les dimensions, spécifiez l’argument 𝐚‌𝐱‌𝐢‌𝐬‌ . Utilisez 𝐚‌𝐱‌𝐢‌𝐬‌=0 pour ajouter une nouvelle ligne (concaténation verticale) et 𝐚‌𝐱‌𝐢‌𝐬‌=1 pour ajouter une nouvelle colonne (concaténation horizontale). La spécification d’une dimension inexistante génère une erreur.

print(np.append(a_2d, a_2d_ex, axis=0)) # [[ 0 1 2] # [ 3 4 5] # [ 0 10 20] # [30 40 50]] print(np.append(a_2d, a_2d_ex, axis=1)) # [[ 0 1 2 0 10 20] # [ 3 4 5 30 40 50]] # print(np.append(a_2d, a_2d_ex, axis=2)) # AxisError: axis 2 is out of bounds for array of dimension 2 

Lors de l’ajout d’une nouvelle ligne avec 𝐚‌𝐱‌𝐢‌𝐬‌=0 , le nombre de colonnes doit correspondre au tableau d’origine, et lors de l’ajout d’une nouvelle colonne avec 𝐚‌𝐱‌𝐢‌𝐬‌=1 , le nombre de lignes doit correspondre. Notez que les parties manquantes ne sont pas remplies avec des valeurs N𝐚‌N .

a_2d_ex2 = np.arange(2).reshape(1, 2) * 10 print(a_2d_ex2) # [[ 0 10]] # print(np.append(a_2d, a_2d_ex2, axis=0)) # ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 3 and the array at index 1 has size 2 # print(np.append(a_2d, a_2d_ex2, axis=1)) # ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 2 and the array at index 1 has size 1 

Comme dans l’exemple unidimensionnel, l’échange des premier et deuxième arguments inverse l’ordre.

print(np.append(a_2d_ex, a_2d, axis=0)) # [[ 0 10 20] # [30 40 50] # [ 0 1 2] # [ 3 4 5]] print(np.append(a_2d_ex, a_2d, axis=1)) # [[ 0 10 20 0 1 2] # [30 40 50 3 4 5]] 

Il est également possible de définir une liste bidimensionnelle (liste de listes) au lieu d’un 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ .

print(np.append(a_2d, [[0, 10, 20], [30, 40, 50]], axis=0)) # [[ 0 1 2] # [ 3 4 5] # [ 0 10 20] # [30 40 50]] 

Différences entre 𝐧‌𝐩‌.𝐯‌𝐬‌𝐭‌𝐚‌𝐜‌𝐤‌() et 𝐧‌𝐩‌.𝐡‌𝐬‌𝐭‌𝐚‌𝐜‌𝐤‌()

Dans 𝐧‌𝐩‌.𝐚‌𝐩‌𝐩‌𝐞‌𝐧‌𝐝‌() , les dimensions incompatibles entre les tableaux spécifiés déclenchent une erreur.

Par exemple, pour ajouter une seule ligne à un tableau bidimensionnel, les deux tableaux doivent être bidimensionnels. Utilisez 𝐫‌𝐞‌𝐬‌𝐡‌𝐚‌𝐩‌𝐞‌() pour ajuster la forme.

a_2d = np.arange(6).reshape(2, 3) print(a_2d) # [[0 1 2] # [3 4 5]] a_row_1d = np.arange(3) * 10 print(a_row_1d) # [ 0 10 20] # print(np.append(a_2d, a_row_1d, axis=0)) # ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s) print(a_row_1d.reshape(1, 3)) # [[ 0 10 20]] print(np.append(a_2d, a_row_1d.reshape(1, 3), axis=0)) # [[ 0 1 2] # [ 3 4 5] # [ 0 10 20]] 

Il en va de même pour les colonnes.

a_col_1d = np.arange(2) * 10 print(a_col_1d) # [ 0 10] # print(np.append(a_2d, a_col_1d, axis=1)) # ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s) print(a_col_1d.reshape(2, 1)) # [[ 0] # [10]] print(np.append(a_2d, a_col_1d.reshape(2, 1), axis=1)) # [[ 0 1 2 0] # [ 3 4 5 10]] 

𝐧‌𝐩‌.𝐯‌𝐬‌𝐭‌𝐚‌𝐜‌𝐤‌() , qui concatène des tableaux verticalement, peut concaténer directement un tableau à deux dimensions et un tableau à une dimension. Vous pouvez définir plusieurs tableaux à concaténer simultanément dans une liste.

print(np.vstack([a_2d, a_row_1d])) # [[ 0 1 2] # [ 3 4 5] # [ 0 10 20]] print(np.vstack([a_2d, a_row_1d, [[0, -1, -2], [-3, -4, -5]]])) # [[ 0 1 2] # [ 3 4 5] # [ 0 10 20] # [ 0 -1 -2] # [-3 -4 -5]] 

𝐧‌𝐩‌.𝐡‌𝐬‌𝐭‌𝐚‌𝐜‌𝐤‌() , qui concatène les tableaux horizontalement, nécessite des dimensions correspondantes comme 𝐧‌𝐩‌.𝐚‌𝐩‌𝐩𝐞‌𝐧‌𝐝‌() , mais il peut concaténer plusieurs tableaux à la fois.

# print(np.hstack([a_2d, a_col_1d])) # ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s) print(np.hstack([a_2d, a_col_1d.reshape(2, 1), [[0, -1], [-2, -3]]])) # [[ 0 1 2 0 0 -1] # [ 3 4 5 10 -2 -3]] 

Bien que cela puisse être une question de préférence personnelle, l’utilisation de 𝐧‌𝐩‌.𝐯‌𝐬‌𝐭‌𝐚‌𝐜‌𝐤‌() ou 𝐧‌𝐩‌.𝐡‌𝐬‌𝐭‌𝐚‌𝐜‌𝐤‌() peut être plus intuitif pour concaténer des tableaux bidimensionnels.

De plus, il existe 𝐧‌𝐩‌.𝐝‌𝐬‌𝐭‌𝐚‌𝐜‌𝐤‌() pour concaténer des tableaux bidimensionnels en profondeur pour créer un tableau tridimensionnel. Pour plus de détails, consultez l’article ci-dessous.

𝐧‌𝐩‌.𝐚‌𝐩‌𝐩‌𝐞‌𝐧‌𝐝‌() avec des tableaux tridimensionnels et de dimensions supérieures

L’approche pour les tableaux tridimensionnels et de dimensions supérieures suit le même principe.

Par défaut ( 𝐚‌𝐱‌𝐢‌𝐬‌=N𝐨‌𝐧‌𝐞‌ ), le tableau est aplati à une dimension avant d’être ajouté à la fin.

a_3d = np.arange(12).reshape(2, 3, 2) print(a_3d) # [[[ 0 1] # [ 2 3] # [ 4 5]] #  # [[ 6 7] # [ 8 9] # [10 11]]] print(np.append(a_3d, 100)) # [ 0 1 2 3 4 5 6 7 8 9 10 11 100] 

L’argument 𝐚‌𝐱‌𝐢‌𝐬‌ est Lorsque spécifié, les tableaux sont concaténés le long des axes respectifs.

Pour les tableaux tridimensionnels et de dimensions supérieures, il peut être difficile d’imaginer comment ils sont concaténés simplement en regardant la sortie, il est donc bon de vérifier la forme pour avoir une meilleure compréhension.

a_3d_ex = np.arange(12).reshape(2, 3, 2) * 10 print(a_3d_ex) # [[[ 0 10] # [ 20 30] # [ 40 50]] #  # [[ 60 70] # [ 80 90] # [100 110]]] print(a_3d_ex.shape) # (2, 3, 2) print(np.append(a_3d, a_3d_ex, axis=0)) # [[[ 0 1] # [ 2 3] # [ 4 5]] #  # [[ 6 7] # [ 8 9] # [ 10 11]] #  # [[ 0 10] # [ 20 30] # [ 40 50]] #  # [[ 60 70] # [ 80 90] # [100 110]]] print(np.append(a_3d, a_3d_ex, axis=0).shape) # (4, 3, 2) print(np.append(a_3d, a_3d_ex, axis=1)) # [[[ 0 1] # [ 2 3] # [ 4 5] # [ 0 10] # [ 20 30] # [ 40 50]] #  # [[ 6 7] # [ 8 9] # [ 10 11] # [ 60 70] # [ 80 90] # [100 110]]] print(np.append(a_3d, a_3d_ex, axis=1).shape) # (2, 6, 2) print(np.append(a_3d, a_3d_ex, axis=2)) # [[[ 0 1 0 10] # [ 2 3 20 30] # [ 4 5 40 50]] #  # [[ 6 7 60 70] # [ 8 9 80 90] # [ 10 11 100 110]]] print(np.append(a_3d, a_3d_ex, axis=2).shape) # (2, 3, 4) 

𝐧‌𝐩‌.𝐜‌𝐨‌𝐧‌𝐜‌𝐚‌𝐭‌𝐞‌𝐧‌𝐚‌𝐭‌𝐞‌() est utile pour concaténer séquentiellement plusieurs tableaux.

print(np.concatenate([a_3d_ex, a_3d, a_3d_ex], axis=2)) # [[[ 0 10 0 1 0 10] # [ 20 30 2 3 20 30] # [ 40 50 4 5 40 50]] #  # [[ 60 70 6 7 60 70] # [ 80 90 8 9 80 90] # [100 110 10 11 100 110]]] 

Pour plus de détails, reportez-vous à l’article suivant.