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 中のレベル ikが結果ではレベル k になるように,実質的に list 中のレベルを入れ換える.関数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}}]まず平坦化することで,配列の3つのレベルを単一の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]テクニカルノート
-
▪
- 多次元リストの並べ替え ▪
- 構造操作 ▪
- 列
関連するガイド
-
▪
- リストの並べ替えと再構築 ▪
- リスト操作 ▪
- 式への構造操作 ▪
- 式 ▪
- データの配列の操作
関連リンク
-

An Elementary Introduction to the Wolfram Language
: Graphs and Networks
-

An Elementary Introduction to the Wolfram Language
: More about Numbers
-

An Elementary Introduction to the Wolfram Language
: Rearranging Lists
-

An Elementary Introduction to the Wolfram Language
: Parts of Lists
-

NKS|Online
(A New Kind of Science)
履歴
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 Language. 1988. "Flatten." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2007. https://reference.wolfram.com/language/ref/Flatten.html.
APA
Wolfram Language. (1988). Flatten. Wolfram Language & System Documentation Center. Retrieved from 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: 15-October-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: 15-October-2026]}