2017-02-10 67 views
0

爲什麼numpy documentation建議更喜歡串連在hstack上?爲什麼numpy文檔建議更喜歡串連在hstack上?

,但你應該更喜歡np.concatenate或np.stack。

根據this answer hstack是一個包裝concatenate。那麼爲什麼不使用提高代碼可讀性的hstack呢?

+0

調用堆棧中的少一幀? – wim

+1

因爲如果你試圖理解他們兩個,你可能不在乎「可讀性」和更多性能? – Divakar

+1

可能是因爲語義對於2以外的數組維度更清晰。 – user2357112

回答

0

所以在hstack實際的代碼是:

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) 

它通過參數第一循環,並確保每個至少一維。這需要處理0d和標量元素,例如在np.hstack([0,1,np.arange(3)])中。

其餘選擇之間的連結在一個和唯一的軸或第二個。

vstack是相似的,除了它使東西至少2d,並在1日連接。

從SO問題/答案來看,這些問題仍在使用中,我認爲在大多數情況下它們不會造成問題。這是造成大多數問題的np.append。這是我希望他們永遠不會添加的那個。

我認爲hstackvstack的主要問題是他們鼓勵(或至少允許)對尺寸和形狀的懶惰思考。當問題出現時,這是因爲海報不明白具有相同數量的維度的意思是什麼,或者形狀必須相同(除了一個軸)。

相關問題