何时使用“.flat”、“.flatiter”或“.flatten()”
Posted
技术标签:
【中文标题】何时使用“.flat”、“.flatiter”或“.flatten()”【英文标题】:When to use '.flat', '.flatiter' or '.flatten()' 【发布时间】:2015-08-11 22:32:15 【问题描述】:什么时候适合使用三个展平参数'.flat'/'.flatiter'/'.flatten'中的哪一个?我知道'.flat'在数组上返回一个一维迭代器,这是否意味着数组保留在原始形状中,并且可以使用单个索引访问数组中的每个元素(例如,即使使用单个 for 循环数组可能是高维的)。 '.flatten' 会返回原始数组的完整副本,该数组被展平为一维数组。
哪个资源占用较少?
【问题讨论】:
【参考方案1】:flatiter
只是flat
(docs) 返回的迭代器对象的类型。所以你只需要知道它是一个和其他迭代器一样的迭代器。
很明显,flatten
会消耗更多的内存和 cpu,因为它会创建一个新数组,而 flat
只创建迭代器对象,速度非常快。
如果您只需要以平面方式迭代数组,请使用flat
。
如果您需要一个实际的平面数组(用于显式迭代之外的其他目的),请使用flatten
。
【讨论】:
和ravel
- 一个视图。想想flatten
没有副本。
别忘了reshape(-1)
。以上是关于何时使用“.flat”、“.flatiter”或“.flatten()”的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 TBSTYLE_FLAT 在 MFC CToolBar 上正确显示静态文本?
使用泛型制作 Array.flat(1) 的 Typescript 包装器
openGL之API学习(二零二)glsl的smooth flat
异形水晶玻璃平底石(Flat Backs No Hotfix)草图编号汇总。