Skip to content

Cet article explique comment concatรฉner plusieurs tableaux NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) ร  l’aide de fonctions telles que ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() et ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() .

๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() concatรจne le long d’un axe existant, tandis que ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne le long d’un nouvel axe. Par exemple, ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() peut concatรฉner des tableaux 2D verticalement ou horizontalement, et ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() peut empiler des tableaux 2D pour crรฉer un tableau 3D.

Bien que ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() et ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() รชtre polyvalent pour une large gamme d’applications, il est รฉgalement bรฉnรฉfique d’รชtre interactif avec ๐งโ€Œ๐ฉโ€Œ.๐›โ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ๐คโ€Œ() , ๐งโ€Œ๐ฉโ€Œ.๐ฏโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() , ๐งโ€Œ๐ฉโ€Œ.๐กโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() et ๐งโ€Œ๐ฉโ€Œ.๐โ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() , en particulier lorsque vous travaillez avec des tableaux 2D.

D’autres mรฉthodes, telles que ๐งโ€Œ๐ฉโ€Œ.๐ซโ€Œ_[] et ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ_[] , sont รฉgalement disponibles mais ne sont pas abordรฉes dans cet article. Pour plus de dรฉtails, reportez-vous ร  la documentation officielle :

Consultez les articles suivants pour savoir comment diviser un ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ou ajouter des valeurs ร  un ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ .

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 

๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() concatรจne des tableaux le long d’un axe existant

๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() concatรจne des tableaux le long d’un axe existant.

Spรฉcifiez la liste des tableaux ร  concatรฉner

Considรฉrez les tableaux suivants comme exemple.

a1 = np.ones((2, 3), int) print(a1) # [[1 1 1] # [1 1 1]] a2 = np.full((2, 3), 2) print(a2) # [[2 2 2] # [2 2 2]] 

Reportez-vous ร  l’article suivant pour ๐งโ€Œ๐ฉโ€Œ.๐จโ€Œ๐งโ€Œ๐žโ€Œ๐ฌโ€Œ() et ๐งโ€Œ๐ฉโ€Œ.๐Ÿโ€Œ๐ฎโ€Œ๐ฅโ€Œ๐ฅโ€Œ() .

Spรฉcifiez la liste des tableaux comme premier argument. Vous pouvez รฉgalement utiliser un tuple ร  la place d’une liste.

print(np.concatenate([a1, a2])) # [[1 1 1] # [1 1 1] # [2 2 2] # [2 2 2]] 

Pour plus de trois tableaux, augmentez simplement le nombre d’รฉlรฉments dans la liste ou le tuple spรฉcifiรฉ comme premier argument.

a3 = np.full((2, 3), 3) print(a3) # [[3 3 3] # [3 3 3]] print(np.concatenate([a1, a2, a3])) # [[1 1 1] # [1 1 1] # [2 2 2] # [2 2 2] # [3 3 3] # [3 3 3]] 

Spรฉcifiez l’axe ร  concatรฉner : ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ

Spรฉcifiez l’axe ร  concatรฉner comme deuxiรจme argument, ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ . La valeur par dรฉfaut est ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 .

Pour les tableaux 2D, ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 concatรจne verticalement et ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 concatรจne horizontalement.

a1 = np.ones((2, 3), int) print(a1) # [[1 1 1] # [1 1 1]] a2 = np.full((2, 3), 2) print(a2) # [[2 2 2] # [2 2 2]] print(np.concatenate([a1, a2], 0)) # [[1 1 1] # [1 1 1] # [2 2 2] # [2 2 2]] print(np.concatenate([a1, a2], 1)) # [[1 1 1 2 2 2] # [1 1 1 2 2 2]] 

La spรฉcification d’un axe inexistant entraรฎnera une erreur. Pour concatรฉner le long d’un nouvel axe, par exemple lors de l’empilement de tableaux 2D pour crรฉer un tableau 3D, utilisez ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() ou d’autres fonctions similaires qui seront abordรฉes plus tard.

# print(np.concatenate([a1, a2], 2)) # AxisError: axis 2 is out of bounds for array of dimension 2 

Une erreur se produit si les tailles des axes autres que l’axe de concatรฉnation ne correspondent pas. Les parties manquantes ne sont pas remplies avec N๐šโ€ŒN .

a2_ = np.full((3, 3), 2) print(a2_) # [[2 2 2] # [2 2 2] # [2 2 2]] print(np.concatenate([a1, a2_], 0)) # [[1 1 1] # [1 1 1] # [2 2 2] # [2 2 2] # [2 2 2]] # print(np.concatenate([a1, a2_], 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 3 

La mรชme chose a choisi s’appliquer aux tableaux de dimensions autres que deux : spรฉcifier l’axe de concatรฉnation avec le deuxiรจme argument ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ , en notant que la concatรฉnation ne peut pas รชtre effectuรฉe sur des axes inexistants.

a1 = np.ones(3, int) print(a1) # [1 1 1] a2 = np.full(3, 2) print(a2) # [2 2 2] print(np.concatenate([a1, a2], 0)) # [1 1 1 2 2 2] # print(np.concatenate([a1, a2], 1)) # AxisError: axis 1 is out of bounds for array of dimension 1 

Une erreur se produit si les tableaux d’entrรฉe ont un nombre de dimensions diffรฉrent.

a1 = np.ones((2, 3), int) print(a1) # [[1 1 1] # [1 1 1]] a2 = np.full(3, 2) print(a2) # [2 2 2] # print(np.concatenate([a1, a2], 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) 

Il est possible de concatรฉner verticalement des tableaux 1D et 2D en utilisant ๐งโ€Œ๐ฉโ€Œ.๐›โ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ๐คโ€Œ() ou ๐งโ€Œ๐ฉโ€Œ.๐ฏโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() comme dรฉcrit plus longe.

๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux le long d’un nouvel axe

Contrairement ร  ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() , qui concatรจne des tableaux le long d’un axe existant, ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() empile les tableaux le long d’un nouvel axe.

Dans ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() , le premier argument est la liste des tableaux et le deuxiรจme argument, ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ , spรฉcifique l’axe de concatรฉnation dans le tableau rรฉsultant.

Pour les tableaux 1D

Considรฉrez les tableaux 1D suivants comme exemples.

a1 = np.ones(3, int) print(a1) # [1 1 1] a2 = np.full(3, 2) print(a2) # [2 2 2] 

ร‰tant donnรฉ que ๐งโ€Œ๐ฉโ€Œ.๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux le long d’un nouvel axe, le rรฉsultat est un tableau 2D, une dimension plus haute que l’entrรฉe.

La valeur par dรฉfaut est ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 . La spรฉcification d’un axe qui n’existe pas dans le tableau rรฉsultant entraรฎnera une erreur.

print(np.stack([a1, a2])) # [[1 1 1] # [2 2 2]] print(np.stack([a1, a2], 0)) # [[1 1 1] # [2 2 2]] print(np.stack([a1, a2], 1)) # [[1 2] # [1 2] # [1 2]] # print(np.stack([a1, a2], 2)) # AxisError: axis 2 is out of bounds for array of dimension 2 

Le paramรจtre ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=-1 spรฉcifique le dernier axe, รฉquivalent ร  ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 dans cet exemple.

print(np.stack([a1, a2], -1)) # [[1 2] # [1 2] # [1 2]] 

Une erreur se produit si les tableaux d’entrรฉe ont des formes diffรฉrentes.

a2_ = np.full(4, 2) print(a2_) # [2 2 2 2] # print(np.stack([a1, a2_])) # ValueError: all input arrays must have the same shape 

Pour les tableaux 2D

Ensuite, considรฉrez les tableaux 2D suivants comme exemples.

a1 = np.ones((3, 4), int) print(a1) # [[1 1 1 1] # [1 1 1 1] # [1 1 1 1]] a2 = np.full((3, 4), 2) print(a2) # [[2 2 2 2] # [2 2 2 2] # [2 2 2 2]] 

Similairement ร  l’opรฉration sur les tableaux 1D, l’utilisation de tableaux 2D comme entrรฉe gรฉnรจre un tableau 3D, une dimension plus haute que l’entrรฉe. Comprendre la forme du tableau rรฉsultant est essentiel pour comprendre ce concept.

print(np.stack([a1, a2])) # [[[1 1 1 1] # [1 1 1 1] # [1 1 1 1]] #  # [[2 2 2 2] # [2 2 2 2] # [2 2 2 2]]] print(np.stack([a1, a2], 0)) # [[[1 1 1 1] # [1 1 1 1] # [1 1 1 1]] #  # [[2 2 2 2] # [2 2 2 2] # [2 2 2 2]]] print(np.stack([a1, a2], 0).shape) # (2, 3, 4) 

print(np.stack([a1, a2], 1)) # [[[1 1 1 1] # [2 2 2 2]] #  # [[1 1 1 1] # [2 2 2 2]] #  # [[1 1 1 1] # [2 2 2 2]]] print(np.stack([a1, a2], 1).shape) # (3, 2, 4) print(np.stack([a1, a2], 1)[:, 0, :]) # [[1 1 1 1] # [1 1 1 1] # [1 1 1 1]] print(np.stack([a1, a2], 1)[:, 1, :]) # [[2 2 2 2] # [2 2 2 2] # [2 2 2 2]] 

print(np.stack([a1, a2], 2)) # [[[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]]] print(np.stack([a1, a2], 2).shape) # (3, 4, 2) print(np.stack([a1, a2], 2)[:, :, 0]) # [[1 1 1 1] # [1 1 1 1] # [1 1 1 1]] print(np.stack([a1, a2], 2)[:, :, 1]) # [[2 2 2 2] # [2 2 2 2] # [2 2 2 2]] 

La spรฉcification d’un axe qui n’existe pas dans le tableau rรฉsultant entraรฎnera une erreur.

# print(np.stack([a1, a2], 3)) # AxisError: axis 3 is out of bounds for array of dimension 3 

Le paramรจtre ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=-1 spรฉcifique le dernier axe, รฉquivalent ร  ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=2 dans cet exemple.

print(np.stack([a1, a2], -1)) # [[[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]]] print(np.stack([a1, a2], -1).shape) # (3, 4, 2) 

Une erreur se produit si les tableaux d’entrรฉe ont des formes diffรฉrentes.

a2_ = np.full((2, 3), 2) print(a2_) # [[2 2 2] # [2 2 2]] # print(np.stack([a1, a2_])) # ValueError: all input arrays must have the same shape 

Le mรชme concept s’applique ร  des cas encore plus multidimensionnels.

๐งโ€Œ๐ฉโ€Œ.๐›โ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux selon l’agencement spรฉcifiรฉ

๐งโ€Œ๐ฉโ€Œ.๐›โ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ๐คโ€Œ() vous permet de concatรฉner des tableaux de maniรจre plus intuitive.

Spรฉcifiez une liste indiquant comment les tableaux d’origine sont disposรฉs.

Par exemple, la spรฉcification d’une liste de tableaux ร  placer cรดte ร  cรดte entraรฎne une concatรฉnation horizontale selon l’ordre.

a1 = np.ones((2, 3), int) print(a1) # [[1 1 1] # [1 1 1]] a2 = np.full((2, 3), 2) print(a2) # [[2 2 2] # [2 2 2]] print(np.block([a1, a2])) # [[1 1 1 2 2 2] # [1 1 1 2 2 2]] 

Une liste 2D (liste imbriquรฉe) permet รฉgalement de prรฉciser les dispositions verticales.

print(np.block([[a1], [a2]])) # [[1 1 1] # [1 1 1] # [2 2 2] # [2 2 2]] print(np.block([[a1, a2], [a2, a1]])) # [[1 1 1 2 2 2] # [1 1 1 2 2 2] # [2 2 2 1 1 1] # [2 2 2 1 1 1]] 

La spรฉcification d’une liste 3D gรฉnรจre un rรฉsultat 3D.

print(np.block([[[a1]], [[a2]]])) # [[[1 1 1] # [1 1 1]] #  # [[2 2 2] # [2 2 2]]] print(np.block([[[a1]], [[a2]]]).shape) # (2, 2, 3) 

Il est รฉgalement possible de combiner des tableaux 1D et 2D ; cependant, pour รฉviter les erreurs, la profondeur d’imbrication doit รชtre cohรฉrente, mรชme en combinant un seul tableau, comme le dรฉmontrer [๐šโ€Œ3] dans l’exemple suivant.

a3 = np.full(6, 3) print(a3) # [3 3 3 3 3 3] print(np.block([[a1, a2], [a3]])) # [[1 1 1 2 2 2] # [1 1 1 2 2 2] # [3 3 3 3 3 3]] # print(np.block([[a1, a2], a3])) # ValueError: List depths are mismatched. First element was at depth 2, but there is an element at depth 1 (arrays[1]) 

Une erreur se produit s’il y a une incompatibilitรฉ dans le nombre d’รฉlรฉments.

# print(np.block([[a1, a2, a3]])) # 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 2 has size 1 

๐งโ€Œ๐ฉโ€Œ.๐ฏโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux verticalement

๐งโ€Œ๐ฉโ€Œ.๐ฏโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux verticalement, ce qui รฉquivaut essentiellement ร  ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() avec ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 .

a1 = np.ones((2, 3), int) print(a1) # [[1 1 1] # [1 1 1]] a2 = np.full((2, 3), 2) print(a2) # [[2 2 2] # [2 2 2]] print(np.vstack([a1, a2])) # [[1 1 1] # [1 1 1] # [2 2 2] # [2 2 2]] print(np.concatenate([a1, a2], 0)) # [[1 1 1] # [1 1 1] # [2 2 2] # [2 2 2]] 

Cependant, ๐งโ€Œ๐ฉโ€Œ.๐ฏโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() รฉtend les tableaux d’entrรฉe 1D en 2D (forme (N, ) en (1, N) ), permettant la concatรฉnation de tableaux 1D en un tableau 2D ou la concatรฉnation de tableaux 1D et 2D.

a1 = np.ones(3, int) print(a1) # [1 1 1] a2 = np.full(3, 2) print(a2) # [2 2 2] print(np.vstack([a1, a2])) # [[1 1 1] # [2 2 2]] print(np.concatenate([a1.reshape(1, -1), a2.reshape(1, -1)], 0)) # [[1 1 1] # [2 2 2]] 

a2_2d = np.full((2, 3), 2) print(a2_2d) # [[2 2 2] # [2 2 2]] print(np.vstack([a1, a2_2d])) # [[1 1 1] # [2 2 2] # [2 2 2]] print(np.concatenate([a1.reshape(1, -1), a2_2d], 0)) # [[1 1 1] # [2 2 2] # [2 2 2]] 

๐งโ€Œ๐ฉโ€Œ.๐กโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux horizontalement

๐งโ€Œ๐ฉโ€Œ.๐กโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux horizontalement, ce qui รฉquivaut essentiellement ร  ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() avec ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 .

a1 = np.ones((2, 3), int) print(a1) # [[1 1 1] # [1 1 1]] a2 = np.full((2, 3), 2) print(a2) # [[2 2 2] # [2 2 2]] print(np.hstack([a1, a2])) # [[1 1 1 2 2 2] # [1 1 1 2 2 2]] print(np.concatenate([a1, a2], 1)) # [[1 1 1 2 2 2] # [1 1 1 2 2 2]] 

Cependant, pour les tableaux 1D, il appelle ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() avec ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 .

a1 = np.ones(3, int) print(a1) # [1 1 1] a2 = np.full(3, 2) print(a2) # [2 2 2] print(np.hstack([a1, a2])) # [1 1 1 2 2 2] print(np.concatenate([a1, a2], 0)) # [1 1 1 2 2 2] 

Contrairement ร  ๐งโ€Œ๐ฉโ€Œ.๐ฏโ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() , les tableaux 1D ne sont pas dรฉveloppรฉs en 2D, donc les tableaux 1D et 2D ne peuvent pas รชtre concatรฉnรฉs.

a1 = np.ones((2, 3), int) print(a1) # [[1 1 1] # [1 1 1]] a2 = np.full(2, 2) print(a2) # [2 2] # print(np.hstack([a1, a2])) # 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) 

๐งโ€Œ๐ฉโ€Œ.๐โ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux dans le sens de la profondeur

๐งโ€Œ๐ฉโ€Œ.๐โ€Œ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐œโ€Œ๐คโ€Œ() concatรจne les tableaux dans le sens de la profondeur.

Il est essentiellement รฉquivalent ร  ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() avec ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=2 , mais les tableaux de 2D ou moins sont รฉtendus en 3D avant la concatรฉnation.

Les tableaux 2D sont transformรฉs de la forme (M, N) ร  (M, N, 1) .

a1 = np.ones((3, 4), int) print(a1) # [[1 1 1 1] # [1 1 1 1] # [1 1 1 1]] a2 = np.full((3, 4), 2) print(a2) # [[2 2 2 2] # [2 2 2 2] # [2 2 2 2]] print(np.dstack([a1, a2])) # [[[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]]] print(np.dstack([a1, a2]).shape) # (3, 4, 2) print(np.dstack([a1, a2])[:, :, 0]) # [[1 1 1 1] # [1 1 1 1] # [1 1 1 1]] print(np.dstack([a1, a2])[:, :, 1]) # [[2 2 2 2] # [2 2 2 2] # [2 2 2 2]] 

ร‰quivalent ร  ce qui suit ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() .

print(np.concatenate([a1.reshape(3, 4, 1), a2.reshape(3, 4, 1)], 2)) # [[[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]] #  # [[1 2] # [1 2] # [1 2] # [1 2]]] 

Les tableaux 1D sont รฉgalement รฉtendus en 3D de la forme (N, ) ร  (1, N, 1) .

a1 = np.ones(3, int) print(a1) # [1 1 1] a2 = np.full(3, 2) print(a2) # [2 2 2] print(np.dstack([a1, a2])) # [[[1 2] # [1 2] # [1 2]]] print(np.dstack([a1, a2]).shape) # (1, 3, 2) print(np.dstack([a1, a2])[:, :, 0]) # [[1 1 1]] print(np.dstack([a1, a2])[:, :, 1]) # [[2 2 2]] 

ร‰quivalent ร  ce qui suit ๐งโ€Œ๐ฉโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ญโ€Œ๐žโ€Œ() .

print(np.concatenate([a1.reshape(1, -1, 1), a2.reshape(1, -1, 1)], 2)) # [[[1 2] # [1 2] # [1 2]]]