⌺ — Stencil
Keys: Alt-q Backtick
f⌺S Y applies f to neighbourhoods of sizes S on leading axes. Windows at the edges are padded with prototype fill.
Negative sizes in Windows return the same windows as one array.
(+/⊢)⌺3 [1 2 3 4] ⍝ 3 6 9 7⍵ is the window. ⍺ gives signed padding counts per axis: positive at the start, negative at the end. The two-chain (+/⊢) discards ⍺. A two-row specification gives sizes then movements.
(+/⊢)⌺[[3]⋄[2]]⍳8 ⍝ 1 6 12 18Results assemble with fill.
A function right operand computes the specification from the argument: f⌺g Y is f⌺(g Y) Y. Rank and Axis take a function right operand in the same way. Here the window size is the square root of the length, rounded up:
(+/⊢)⌺{⌈√≢⍵} ⍳9 ⍝ 1 3 6 9 12 15 18 21 15Errors
RANK: specification not a unit, vector or two-row matrix, or more axes thanYLENGTH: a matrix without two rowsDOMAIN: no axes, nonpositive sizes or movements, or a size of at least twice its axis length