2013-05-09 10 views
22

Qual è esattamente la differenza tra numpy vstack e column_stack. Leggendo la documentazione, sembra che column_stack sia un'implementazione di vstack per gli array 1D. È un'implementazione più efficiente? Altrimenti, non riesco a trovare una ragione per avere solo vstack.numpy vstack vs. column_stack

risposta

50

Credo che il codice seguente mostra la differenza bene:

>>> 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]) 

Ho incluso hstack per il confronto pure. Notare come stack column_stack lungo la seconda dimensione mentre stack vstack lungo la prima dimensione. L'equivalente per column_stack è la hstack seguente comando:

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

Spero che d'accordo che column_stack è più conveniente.

6

Nella sezione Note di column_stack, si sottolinea questo:

Questa funzione è equivalente a np.vstack(tup).T.

Ci sono molte funzioni in numpy che sono wrapper convenienti di altre funzioni. Ad esempio, la sezione Note di vstack dice:

Equivalente a np.concatenate(tup, axis=0) se TUP contiene le matrici che sono almeno 2-dimensionale.

Sembra che column_stack sia solo una funzione di comodità per vstack.