In generale puoi concatenare un'intera sequenza di array lungo qualsiasi asse:
numpy.concatenate( LIST, axis=0 )
ma non ci si deve preoccupare circa la forma e la dimensionalità di ogni matrice della lista (per un'uscita 3x5 2-dimensionale, è necessario garantire che essi siano tutti 2-dimensionali array N-per-5 già). Se si desidera concatenare array unidimensionali come righe di un output bidimensionale, è necessario espandere la loro dimensionalità.
Come sottolinea la risposta di Jorge, c'è anche la funzione stack, introdotta in numpy 1.10:
numpy.stack( LIST, axis=0 )
Questo adotta l'approccio complementare: crea una nuova vista di ogni array di input e aggiunge una dimensione extra (in questo caso, a sinistra, quindi ogni narray 1D -element diventa un array 1-by- n2D) prima della concatenazione. Funzionerà solo se tutti gli array di input hanno la stessa forma, anche lungo l'asse di concatenazione.
vstack(o equivalentemente row_stack) è spesso una soluzione più facile da usare perché richiederà una sequenza di array a 1 e / o 2 dimensioni ed espanderà la dimensionalità automaticamente dove necessario e solo dove necessario, prima di concatenare l'intero elenco insieme. Dove è richiesta una nuova dimensione, viene aggiunta a sinistra. Ancora una volta, puoi concatenare un intero elenco in una volta senza bisogno di iterare:
numpy.vstack( LIST )
Questo comportamento flessibile è anche esibito dalla scorciatoia sintattica numpy.r_[ array1, ...., arrayN ](notare le parentesi quadre). Questo è utile per concatenare alcuni array con nomi espliciti, ma non va bene per la tua situazione perché questa sintassi non accetterà una sequenza di array, come il tuo LIST.
Esiste anche una funzione column_stacke una scorciatoia analoghe c_[...], per lo stacking orizzontale (a colonna), nonché una funzione quasi analoga, hstacksebbene per qualche motivo quest'ultima sia meno flessibile (è più rigorosa sulla dimensionalità degli array di input e cerca di concatenare Array 1-D end-to-end invece di trattarli come colonne).
Infine, nel caso specifico di stacking verticale di array 1-D, funziona anche quanto segue:
numpy.array( LIST )
... perché gli array possono essere costruiti da una sequenza di altri array, aggiungendo una nuova dimensione all'inizio.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]questa non è la sintassi Python corretta. Si prega di precisare.