Ogólnie rzecz biorąc, można łączyć całą sekwencję tablic wzdłuż dowolnej osi:
numpy.concatenate( LIST, axis=0 )
ale nie trzeba się martwić o kształcie i wymiarowości każdej tablicy na liście (dla 2-wymiarowej wyjście 3x5, trzeba upewnić się, że wszyscy są 2-wymiarowe n-by-5 tablice już). Jeśli chcesz połączyć jednowymiarowe tablice jako wiersze dwuwymiarowego wyniku, musisz rozszerzyć ich wymiarowość.
Jak wskazuje odpowiedź Jorge, istnieje również funkcja stack
, wprowadzona w numpy 1.10:
numpy.stack( LIST, axis=0 )
Przyjmuje to podejście komplementarne: tworzy nowy widok każdej tablicy wejściowej i dodaje dodatkowy wymiar (w tym przypadku po lewej stronie, więc każda n
-elementowa tablica 1D staje się tablicą 1-na- n
2D) przed połączeniem. Będzie działać tylko wtedy, gdy wszystkie tablice wejściowe mają ten sam kształt - nawet wzdłuż osi konkatenacji.
vstack
(lub równoważnie row_stack
) jest często łatwiejszym w użyciu rozwiązaniem, ponieważ wymaga sekwencji jedno- i / lub dwuwymiarowych tablic i automatycznie rozszerza wymiarowanie w razie potrzeby i tylko w razie potrzeby, przed połączeniem całej listy razem. Tam, gdzie wymagany jest nowy wymiar, jest on dodawany po lewej stronie. Ponownie możesz połączyć całą listę naraz bez konieczności iteracji:
numpy.vstack( LIST )
To elastyczne zachowanie jest również widoczne w skrócie składniowym numpy.r_[ array1, ...., arrayN ]
(zwróć uwagę na nawiasy kwadratowe). Jest to dobre do konkatenacji kilku jawnie nazwanych tablic, ale nie jest dobre w twojej sytuacji, ponieważ ta składnia nie akceptuje sekwencji tablic, takich jak twoja LIST
.
Istnieje również analogiczna funkcja column_stack
i skrót c_[...]
do układania poziomego (kolumnowego), a także funkcja prawie analogowa - hstack
chociaż z jakiegoś powodu ta ostatnia jest mniej elastyczna (jest bardziej rygorystyczna w kwestii wymiarowania tablic wejściowych i próbuje łączyć Tablice 1-w od końca do końca zamiast traktować je jako kolumny).
Wreszcie, w szczególnym przypadku pionowego układania w stos tablic 1-D, działa również:
numpy.array( LIST )
... ponieważ tablice można zbudować z sekwencji innych tablic, nadając początekowi nowy wymiar.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
to nie jest poprawna składnia Pythona. Proszę o wyjaśnienie.