En général, vous pouvez concaténer toute une séquence de tableaux le long de n'importe quel axe:
numpy.concatenate( LIST, axis=0 )
mais vous ne devez vous soucier de la forme et dimensionnalité de chaque tableau dans la liste (pour 2 dimensions sortie 3x5, vous devez vous assurer qu'ils sont tous les n-par-5 tableaux déjà 2 dimensions). Si vous souhaitez concaténer des tableaux à une dimension en tant que lignes d'une sortie à deux dimensions, vous devez étendre leur dimensionnalité.
Comme le souligne la réponse de Jorge, il y a aussi la fonction stack
, introduite dans numpy 1.10:
numpy.stack( LIST, axis=0 )
Cela prend l'approche complémentaire: il crée une nouvelle vue de chaque tableau d'entrée et ajoute une dimension supplémentaire (dans ce cas, sur la gauche, chaque n
tableau -element 1D devient un tableau 1 par n
2D) avant la concaténation. Cela ne fonctionnera que si tous les tableaux d'entrée ont la même forme, même le long de l'axe de concaténation.
vstack
(ou de manière équivalente row_stack
) est souvent une solution plus facile à utiliser car elle prendra une séquence de tableaux à 1 et / ou 2 dimensions et étendra la dimensionnalité automatiquement si nécessaire et uniquement si nécessaire, avant de concaténer la liste entière. Lorsqu'une nouvelle dimension est requise, elle est ajoutée à gauche. Encore une fois, vous pouvez concaténer une liste entière à la fois sans avoir à itérer:
numpy.vstack( LIST )
Ce comportement flexible est également présenté par le raccourci syntaxique numpy.r_[ array1, ...., arrayN ]
(notez les crochets). C'est bon pour concaténer quelques tableaux nommés explicitement mais ce n'est pas bon pour votre situation car cette syntaxe n'acceptera pas une séquence de tableaux, comme la vôtre LIST
.
Il existe également une fonction column_stack
et un raccourci analogues c_[...]
, pour l'empilement horizontal (par colonne), ainsi qu'une fonction presque analogique hstack
- bien que, pour une raison quelconque, cette dernière soit moins flexible (elle est plus stricte sur la dimensionnalité des tableaux d'entrée et tente de concaténer Tableaux 1-D de bout en bout au lieu de les traiter comme des colonnes).
Enfin, dans le cas spécifique de l'empilement vertical de tableaux 1-D, ce qui suit fonctionne également:
numpy.array( LIST )
... parce que les tableaux peuvent être construits à partir d'une séquence d'autres tableaux, ajoutant une nouvelle dimension au début.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
ce n'est pas la bonne syntaxe python. Précisez s'il vous plaît.