2013-05-09 107 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的便利功能。