numpy vstack vs. column_stack

¿Cuál es exactamente la diferencia entre numpy vstack y column_stack ? Al leer la documentación, parece que column_stack es una implementación de vstack para arreglos 1D. ¿Es una implementación más eficiente? De lo contrario, no puedo encontrar una razón para simplemente tener vstack .

Creo que el siguiente código ilustra muy bien la diferencia:

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

He incluido hstack para la comparación también. Observe cómo column_stack acumula a lo largo de la segunda dimensión mientras que vstack acumula a lo largo de la primera dimensión. El equivalente a column_stack es el siguiente comando hstack :

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

Espero que podamos estar de acuerdo en que column_stack es más conveniente.

En la sección de Notas a column_stack , señala esto:

Esta función es equivalente a np.vstack(tup).T .

Hay muchas funciones en el numpy que son envoltorios convenientes de otras funciones. Por ejemplo, la sección de Notas de vstack dice:

Equivalente a np.concatenate(tup, axis=0) si tup contiene matrices que son al menos bidimensionales.

Parece que column_stack es solo una función de conveniencia para vstack .