簡單的問題:每種方法的優點是什麼。看起來,如果給出正確的參數(和ndarray形狀),它們看起來都是等效的。做一些適當的工作?有更好的表現嗎?我應該使用哪些函數?什麼時候應該使用hstack/vstack vs append vs concatenate vs column_stack
回答
你有權限訪問這些函數的代碼嗎?除np.concatenate
以外,所有內容均以Python編寫。使用IPython shell,您只需使用??
。
如果不是,這裏是他們的代碼摘要:
vstack
concatenate([atleast_2d(_m) for _m in tup], 0)
i.e. turn all imputs in to 2d (or more) and concatenate on first
hstack
concatenate([atleast_1d(_m) for _m in tup], axis=<0 or 1>)
colstack
transform arrays with (if needed)
array(arr, copy=False, subok=True, ndmin=2).T
append
concatenate((asarray(arr), values), axis=axis)
換句話說,他們都通過調整輸入數組的大小,然後連接上右軸工作。它們只是便利功能。
在IPython中,您可以通過輸入其名稱後跟??
來查看函數的源代碼。在hstack
縱觀我們可以看到,它實際上只是圍繞concatenate
的包裝(類似與vstack
和column_stack
):
np.hstack??
def hstack(tup):
...
arrs = [atleast_1d(_m) for _m in tup]
# As a special case, dimension 0 of 1-dimensional arrays is "horizontal"
if arrs[0].ndim == 1:
return _nx.concatenate(arrs, 0)
else:
return _nx.concatenate(arrs, 1)
所以我想只使用哪一個具有最合乎邏輯美其名曰給你。
numpy.vstack:在序列堆疊陣列垂直(行明智).Equivalent到np.concatenate(tup, axis=0)
例如參見:https://docs.scipy.org/doc/numpy/reference/generated/numpy.vstack.html
numpy.hstack:在序列堆棧陣列水平地(逐列).Equivalent到np.concatenate(tup, axis=1)
。例子見: https://docs.scipy.org/doc/numpy/reference/generated/numpy.hstack.html
append是python的內置數據結構list
的一個函數。每次將元素添加到列表中。顯然,要添加多個元素,您將使用extend
。簡而言之,numpy的功能要強大得多。
例如:
假設gray.shape =(N0,N1)
np.vstack((gray,gray,gray))
將有形狀(N0 * 3,N1),你也可以通過np.concantenate((gray,gray,gray),axis=0)
np.hstack((gray,gray,gray))
這樣做將有形狀(n0,n1 * 3),你也可以通過np.concantenate((gray,gray,gray),axis=1)
np.dstack((gray,gray,gray))
將形狀(n0,n1,3)。
- 1. 什麼時候應該使用CryptoAPI vs System.Security.Cryptography vs Bouncycastle?
- 2. numpy vstack vs column_stack
- 3. 什麼時候應該使用Mockery vs JUnit4Mockery?
- 4. 什麼時候應該在Drupal 7中使用Webform vs Fields API?
- 5. ConfigurationManager.AppSettings [「SettingName」] vs Properties.Settings.Default.SettingName什麼時候應該使用每個?
- 6. 什麼時候應該在golang中使用panic vs log.fatalln()?
- 7. 什麼時候應該使用before_filter vs helper_method?
- 8. 什麼時候應該使用if(!someVar)vs assert()?
- 9. 什麼時候應該使用Theme.AppCompat vs ThemeOverlay.AppCompat?
- 10. 什麼時候應該使用Tracing vs Logger.NET,Enterprise Library,log4net或Ukadc.Diagnostics?
- 11. 什麼時候應該使用React.cloneElement vs this.props.children?
- 12. 什麼時候使用EntityManager.find()vs EntityManager.getReference()
- 13. 什麼時候使用node.js vs sinatra vs rails?
- 14. 我什麼時候使用** kwargs vs kwargs(* args vs args)?
- 15. Long vs Integer,long vs int,使用什麼和什麼時候使用?
- 16. REST vs gRPC:我應該什麼時候選擇一個呢?
- 17. 什麼時候應該實現std :: convert :: From vs std :: convert :: Into?
- 18. 什麼時候應該在JavaScript中使用delete vs設置元素爲null?
- 19. 什麼時候應該使用方法重載vs不同命名方法
- 20. 什麼時候應該使用編譯的LINQ vs普通的LINQ
- 21. 本地vs全球臨時表 - 什麼時候使用?
- 22. MVC vs單頁應用程序 - 什麼時候MVC更合適?
- 23. 什麼時候應該使用學說ORM和什麼時候zend-db-table?
- 24. 什麼時候使用Storyboard vs Nib/Xib與從頭編碼?
- 25. 黃瓜:什麼時候使用標籤/鉤子vs背景
- 26. 什麼時候使用iPython Notebook vs文本編輯器
- 27. NSArrayController vs NSMutableArray - 你什麼時候使用NSArrayController?
- 28. 什麼時候使用ATFolder vs BaseFolder更好?
- 29. p5.js - 什麼時候使用var聲明變量vs this.varName
- 30. 日曆add()vs roll()我們什麼時候使用它?
「你有權訪問這些函數的代碼嗎?」 - numpy是[開源](https://github.com/numpy/numpy) – Annan