0
爲什麼numpy documentation建議更喜歡串連在hstack上?爲什麼numpy文檔建議更喜歡串連在hstack上?
,但你應該更喜歡np.concatenate或np.stack。
根據this answer hstack是一個包裝concatenate。那麼爲什麼不使用提高代碼可讀性的hstack呢?
爲什麼numpy documentation建議更喜歡串連在hstack上?爲什麼numpy文檔建議更喜歡串連在hstack上?
,但你應該更喜歡np.concatenate或np.stack。
根據this answer hstack是一個包裝concatenate。那麼爲什麼不使用提高代碼可讀性的hstack呢?
所以在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
。這是我希望他們永遠不會添加的那個。
我認爲hstack
和vstack
的主要問題是他們鼓勵(或至少允許)對尺寸和形狀的懶惰思考。當問題出現時,這是因爲海報不明白具有相同數量的維度的意思是什麼,或者形狀必須相同(除了一個軸)。
調用堆棧中的少一幀? – wim
因爲如果你試圖理解他們兩個,你可能不在乎「可讀性」和更多性能? – Divakar
可能是因爲語義對於2以外的數組維度更清晰。 – user2357112