2015-05-29 45 views
4

什麼時候可以使用三個flattening參數'.flat'/'。flatiter'/'。flatten'中的哪一個?我知道'.flat'返回數組上的一維迭代器,這是否意味着該數組保留在原始形狀中,並且數組中的每個元素都可以使用單個索引進行訪問(例如,即使使用單個for循環該陣列可能是高度尺寸的)。 '.flatten'將原始數組的一個完整副本返回到一維數組中。何時使用'.flat','.flatiter'或'.flatten()'

資源密集度較低?

回答

3

flatiter只是flatdocs)返回的迭代器對象的類型。所以你需要知道的是它是一個迭代器。

顯然,flatten消耗更多的內存和CPU,因爲它創建一個新的數組,而flat只創建迭代器對象,這是超快的。

如果您只需循環遍歷數組,請以平面方式使用flat

如果您需要一個實際的平面陣列(僅用於明確迭代它的目的),請使用flatten

+1

而'ravel' - 一個視圖。在沒有拷貝的情況下思考'扁平化'。 – hpaulj