2013-05-09 16 views
22

Jaka jest dokładnie różnica między numpy vstack i column_stack. Po przeczytaniu dokumentacji wygląda na to, że column_stack jest implementacją vstack dla tablic 1D. Czy jest to bardziej wydajna implementacja? W przeciwnym razie nie mogę znaleźć powodu, dla którego po prostu mam vstack.numpy vstack vs. column_stack

Odpowiedz

50

myślę poniższy kod ilustruje różnicę ładnie:

>>> np.vstack(([1,2,3],[4,5,6])) 
array([[1, 2, 3], 
     [4, 5, 6]]) 
>>> np.column_stack(([1,2,3],[4,5,6])) 
array([[1, 4], 
     [2, 5], 
     [3, 6]]) 
>>> np.hstack(([1,2,3],[4,5,6])) 
array([1, 2, 3, 4, 5, 6]) 

podaję hstack dla porównania, jak również. Zwróć uwagę, jak column_stack układa się wzdłuż drugiego wymiaru, podczas gdy vstack układa się wzdłuż pierwszego wymiaru. Odpowiednikiem column_stack jest następujący hstack polecenie:

>>> np.hstack(([[1],[2],[3]],[[4],[5],[6]])) 
array([[1, 4], 
     [2, 5], 
     [3, 6]]) 

Mam nadzieję, że możemy się zgodzić, że column_stack jest wygodniejsze.

6

W sekcji Notes do column_stack, to zwraca uwagę, to:

Funkcja ta jest równoważna np.vstack(tup).T.

Istnieje wiele funkcji w numpy, które są wygodnymi opakowaniami innych funkcji. Na przykład, sekcja Uwagi o vstack mówi:

Odpowiednik np.concatenate(tup, axis=0) jeśli tup zawiera tablice, które są co najmniej 2-wymiarowej.

Wygląda na to, że column_stack to tylko funkcja wygody dla vstack.

Powiązane problemy