2013-05-09 95 views
22

numpy vstackcolumn_stack之间的区别究竟是什么。通过文档阅读,看起来好像column_stack是针对1D阵列的vstack的实现。这是更有效的实现吗?否则,我找不到只有vstack的理由。numpy vstack vs column_stack

回答

50

我认为下面的代码说明了很好的区别:

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

我已经包括hstack比较为好。请注意沿第二维堆积如何column_stack,而沿着第一维堆积vstack。相当于column_stack如下hstack命令:

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

我希望我们能同意column_stack更方便。

6

在注释部分,column_stack,指出了这一点:

此功能相当于np.vstack(tup).T

numpy有很多功能都是方便其他功能的包装。例如,vstack注释部分表示:

相当于np.concatenate(tup, axis=0)如果TUP包含的至少2维阵列。

看起来像column_stack只是vstack的便利功能。