Windowed Reduce

From APL Wiki
(Redirected from Windowed Reduction First)
Jump to navigation Jump to search
/

Windowed Reduce (/, ), also called N-wise Reduce, is a primitive dyadic operator which takes a dyadic function, and a number as its left argument, inserts it between the overlapping "windows" of the size of its left argument, and evaluates it into a single array in right-to-left order.

Description

When applied to a vector argument, n f/x evaluates to the expression (a f b f c)(b f c f d)… where a, b, c, d, … are the elements of x, grouped into windows of size n. It works like Reduce, except applied on overlapping segments of an array, and borrows most of its functionality from it. When nis negative, each window is reversed before the reduction is done.

Examples

Windowed reduce is used to apply functions on overlapping sections of array e.g. when you need the deltas of an array.

      3+/5 1 4 1 8
10 6 13
      2-/1 2 3 4 5
¯1 ¯1 ¯1 ¯1
      ¯2-/1 2 3 4 5
1 1 1 1
      4,/35 56 67 79 91
┌───────────┬───────────┐
35 56 67 7956 67 79 91
└───────────┴───────────┘

Notable uses

Windowed Reduce is especially common with a left argument of 2 or ¯2, as it is then a pair-wise application of the operand between neighbouring elements, and especially so with comparison functions. For example, 1,2/v indicates the elements that differ from their neighbour on the left. For a Boolean vector b, the expression 2</0,b indicates the first 1 in each contiguous run of 1s.

See also

  • Stencil which can be seen as a generalisation of Windowed Reduce in that for a vector argument, ({f/}n)v is equivalent to n f/ v except in how they deal with the ends of the vector; Stencil includes "shards" and Windowed Reduce does not.

External links

Lessons

Documentation


APL built-ins [edit]
Primitive functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentitySelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndex
Selector Index generatorGradeIndex OfInterval IndexIndicesDeal
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Primitive operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-beamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Atop, Over) ∙ Inner ProductPowerAtUnderRankDepthVariantStencilCut (J)
Quad names
Arrays Index originMigration levelAtomic vector
Functions Name classCase convertUnicode convert
Operators SearchReplace