BlockMap
例題
すべて開く すべて閉じる例 (4)
BlockMap[f, Range[10], 2]長さ2の重なり合う部分リストにオフセット1で関数を適用する:
BlockMap[f, Range[10], 2, 1]BlockMap[f, (| | | | |
| ---- | ---- | ---- | ---- |
| 1 | 2 | 3 | 4 |
| 10 | 20 | 30 | 40 |
| 100 | 200 | 300 | 400 |
| 1000 | 2000 | 3000 | 4000 |), 2];Map[MatrixForm, %, {2}]BlockMap[f, (| | | | |
| ---- | ---- | ---- | ---- |
| 1 | 2 | 3 | 4 |
| 10 | 20 | 30 | 40 |
| 100 | 200 | 300 | 400 |
| 1000 | 2000 | 3000 | 4000 |), {2, 2}];MatrixForm@Map[MatrixForm, %, {3}]スコープ (8)
BlockMap[f, {{1, 2, 3, 4}, {5, 6}, 7, {{"hello"}}}, 2]関数を階数3の配列のサイズ{2,1,2}のブロックに適用する:
BlockMap[f, ArrayReshape[Range@48, {6, 2, 4}], {2, 1, 2}]ブロックサイズ{2,2}でオフセット{1,2}を指定して,行は重なっても列は重ならないようにする:
BlockMap[f, (| | | | |
| ---- | ---- | ---- | ---- |
| 1 | 2 | 3 | 4 |
| 10 | 20 | 30 | 40 |
| 100 | 200 | 300 | 400 |
| 1000 | 2000 | 3000 | 4000 |), {2, 2}, {1, 2}];MatrixForm@Map[MatrixForm, %, {3}]多次元オフセットは,事実上,強制的にブロックサイズ指定にマッチするようにされる:
BlockMap[f, (| | | | |
| ---- | ---- | ---- | ---- |
| 1 | 2 | 3 | 4 |
| 10 | 20 | 30 | 40 |
| 100 | 200 | 300 | 400 |
| 1000 | 2000 | 3000 | 4000 |), 2, {1, 2}];
MatrixForm@Map[MatrixForm, %, {3}]BlockMap[f, {1, 2, 3, 4, 5, 6, 7, 8}, 2, 3]BlockMap[f, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4]頭部はListではなくてもよい:
BlockMap[f, h[1, 2, 3, 4], 2]BlockMap[f, h[h[1, 2, 3], h[4, 5, 6]], {2, 2}, 1]BlockMapはSparseArrayオブジェクトに使うことができる:
BlockMap[f, SparseArray[{i_, i_} -> 1, {6, 6}], {2, 2}]MatrixForm@Map[MatrixForm, %, {3}]アプリケーション (5)
BlockMap[Last[#] - First[#]&, {a, b, c, d, e, f}, 2, 1]BlockMap[Mean, {a, b, c, d, e}, 3, 1]BlockMap[Median, {{1, 2}, {5, 3}, {1, 4}, {3, 2}, {5, 5}}, 2, 1]data = RandomFunction[WienerProcess[], {0, 10, 0.1}]["Values"];mq = BlockMap[Quantile[#, 0.75]&, data, 3, 1];ListLinePlot[{Rest@data, mq}]n[] := RandomReal[CauchyDistribution[0, 1]]f[] := {u Cos[u] + n[], u Sin[u] + n[]};data = Table[f[], {u, 0, 6π, 1 / 100}];もとになっている信号とノイズのあるシミュレーション結果の経路:
{ParametricPlot[{u Cos[u], u Sin[u]}, {u, 0, 6π}], pd = ListPlot[data, AspectRatio -> 1]}移動TrimmedMeanを使って軌道を平滑化する:
smooth[r_] := BlockMap[TrimmedMean, data, r, 1]Table[ListPlot[smooth[r], AspectRatio -> 1], {r, {25, 50, 100}}]特性と関係 (2)
BlockMapは,事実上,MapとPartitionを使うことに等しい:
BlockMap[f, Range[100], 4, 1] === Map[f, Partition[Range[100], 4, 1]]BlockMapはすべての部分リストを構築する必要はなく,したがってメモリも少なくてよい:
x = Range[10 ^ 4];
ByteCount[x]MemoryConstrained[BlockMap[Total, x, 4];, 10 ^ 5]MemoryConstrained[Map[Total, Partition[x, 4]];, 10 ^ 5]ListCorrelate[ker,list]は,事実上,ker を list 中のスライディングブロックと組み合せる:
ker = {x, y};
list = Range[10];ListCorrelate[ker, list]BlockMapでオフセット 1 を使って関数を長さ ker の重なっている部分に適用する:
BlockMap[ker.#&, list, Length[ker], 1]ListConvolveは,カーネルの向きが逆である点を除いて同じである:
ListConvolve[ker, list]BlockMap[Reverse[ker].#&, list, Length[ker], 1]関連するガイド
-
▪
- 関数のリストへの適用 ▪
- データの配列の操作 ▪
- 関数型プログラミング
テキスト
Wolfram Research (2015), BlockMap, Wolfram言語関数, https://reference.wolfram.com/language/ref/BlockMap.html.
CMS
Wolfram Language. 2015. "BlockMap." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/BlockMap.html.
APA
Wolfram Language. (2015). BlockMap. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BlockMap.html
BibTeX
@misc{reference.wolfram_2026_blockmap, author="Wolfram Research", title="{BlockMap}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/BlockMap.html}", note=[Accessed: 12-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockmap, organization={Wolfram Research}, title={BlockMap}, year={2015}, url={https://reference.wolfram.com/language/ref/BlockMap.html}, note=[Accessed: 12-August-2026]}