Flatten
更多信息
- Flatten 有效地删除内部括号,拆开列表.
- Flatten[list,n] 有效地压平 list 中的顶层 n 次.
- Flatten[f[e,…]] 压平具有头部 f 的子表达式.
- 如果 mij 为矩阵,Flatten[{{m11,m12},{m21,m22}},{{1,3},{2,4}}] 实际上建立了由块 mij 组成的单个矩阵.
- Flatten[list,{{i1},{i2},…}] 实际上改变 list 的顺序,将 list 中 ik 层放置到结果的第 k 层. 注意,函数Transpose 实际上使用这个规则的反过程.
- Flatten 将 SparseArray 对象的所有层压平,如同在相应数组中一样. »
范例
打开所有单元 关闭所有单元基本范例 (3)
范围 (10)
层次规范 (6)
Flatten[{0, {1}, {{2, -2}}, {{{3}, {-3}}}, {{{{4}}}}}, 0]Flatten[{0, {1}, {{2, -2}}, {{{3}, {-3}}}, {{{{4}}}}}, 1]Flatten[{0, {1}, {{2, -2}}, {{{3}, {-3}}}, {{{{4}}}}}, 2]Flatten[{0, {1}, {{2, -2}}, {{{3}, {-3}}}, {{{{4}}}}}, 3]Flatten[{0, {1}, {{2, -2}}, {{{3}, {-3}}}, {{{{4}}}}}, 4]Flatten[{0, {1}, {{2, -2}}, {{{3}, {-3}}}, {{{{4}}}}}, ∞]Flatten[{0, {1}, {{2, -2}}, {{{3}, {-3}}}, {{{{4}}}}}]u = {{a, b}, {c, d}}Flatten[{{u, 0 u}, {0 u, u}}, {{1, 3}, {2, 4}}]//MatrixFormFlatten[{{u, 0 u}, {0 u, u}}, {{1, 4}, {2, 3}}]//MatrixForm输入数组 (4)
Flatten[SparseArray[{{1, 2} -> a, {6, 4} -> b}]]Normal[%]压平一个 QuantityArray 对象:
Flatten[QuantityArray[{{1, 2}, {3, 4}, {5, 6}}, "Knots"]]Normal[%]Flatten 适用于任何头部的表达式:
Flatten[f[f[x, y], z]]Flatten[f[g[u, v], f[x, y]], Infinity, g]Flatten[f[g[u, v], f[x, y]], Infinity, f]应用 (5)
Range[5]Flatten[{%, x, %, %, y}]Table[i ^ j, {i, 3}, {j, 4}]Flatten[%]Table[i -> j, {i, 4}, {j, 3}]Flatten[%]list = Table[i + j - 1, {i, 4}, {j, i}]Flatten[list, {{2}, {1}}]通过压平操作缩并 Dot 运算中的三层数组:
array = RandomInteger[10, {2, 5, 6, 4}];Flatten[array, {{1}, {2, 3, 4}}].Flatten[array, {{2, 3, 4}, {1}}]TensorContract[TensorProduct[array, array], {{2, 6}, {3, 7}, {4, 8}}]属性和关系 (5)
Range[20]Partition[%, 4]Flatten[%]ArrayReshape 在矩形数组上是 Flatten 的逆运算:
array = RandomInteger[9, {3, 2, 4}]Flatten[array]ArrayReshape[%, {3, 2, 4}]对于矩形数组 a,ArrayFlatten[a,r] 等价于 Flatten[a,{{1,r+1},{2,r+2},…,{r,2r}}]:
array = RandomInteger[10, {2, 3, 4, 5, 6, 7, 8}];ArrayFlatten[array, 3] === Flatten[array, {{1, 4}, {2, 5}, {3, 6}}]Flatten 实际上按照指标的词典顺序排列元素:
Flatten[Array[a, {3, 4}]]Flatten[Array[100#1 + 10#2 + #3&, {3, 3, 3}]]对于逆
的排列 p,Flatten[a,List/@p-1]==Transpose[a,p]:
list = Array[Subscript[a, ##]&, {2, 3, 4, 2}];p = RandomSample[Range[4]]invp = InversePermutation[p]Flatten[list, List /@ invp] == Transpose[list, p]巧妙范例 (1)
Framed 的连续层:
NestList[Flatten[#, 1]&, Nest[Framed, x, 6], 10]历史
1988年引入 (1.0) | 在以下年份被更新:2003 (5.0) ▪ 2007 (6.0)
文本
Wolfram Research (1988),Flatten,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Flatten.html (更新于 2007 年).
CMS
Wolfram 语言. 1988. "Flatten." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2007. https://reference.wolfram.com/language/ref/Flatten.html.
APA
Wolfram 语言. (1988). Flatten. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Flatten.html 年
BibTeX
@misc{reference.wolfram_2026_flatten, author="Wolfram Research", title="{Flatten}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/Flatten.html}", note=[Accessed: 13-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_flatten, organization={Wolfram Research}, title={Flatten}, year={2007}, url={https://reference.wolfram.com/language/ref/Flatten.html}, note=[Accessed: 13-November-2026]}