Split

From APL Wiki
Revision as of 03:36, 16 June 2020 by Bubbler (talk | contribs) (Created page with "{{Built-in|Split|↓}} is a monadic primitive function which reduces the rank of its argument by converting one of its axes to one level of nested a...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Split () is a monadic primitive function which reduces the rank of its argument by converting one of its axes to one level of nesting. The axis to move defaults to the last axis, but a different axis can be chosen using function axis. It shares its glyph with the dyadic function Drop. Split is a right inverse to Mix.

Examples

The result of Split on a non-scalar array is always a nested array whose elements are vectors. The rank of ↓[K]Y is ¯1+≢⍴Y (original rank minus 1), its shape is (K≠⍳≢⍴Y)/⍴Y (original shape with K-th axis removed), and the shape of each element is (⍴Y)[K].

      ⎕←Y←2 3 4⍴⎕A  ⍝ 3D array
ABCD
EFGH
IJKL
    
MNOP
QRST
UVWX
      ↓Y  ⍝ Last axis split; 2×3 array of length-4 vectors
┌────┬────┬────┐
│ABCD│EFGH│IJKL│
├────┼────┼────┤
│MNOP│QRST│UVWX│
└────┴────┴────┘
      ↓[2]Y  ⍝ 2nd axis split; 2×4 array of length-3 vectors
┌───┬───┬───┬───┐
│AEI│BFJ│CGK│DHL│
├───┼───┼───┼───┤
│MQU│NRV│OSW│PTX│
└───┴───┴───┴───┘
      ↓↓Y  ⍝ Split twice
┌────────────────┬────────────────┐
│┌────┬────┬────┐│┌────┬────┬────┐│
││ABCD│EFGH│IJKL│││MNOP│QRST│UVWX││
│└────┴────┴────┘│└────┴────┴────┘│
└────────────────┴────────────────┘

      (≡Y)(≢⍴Y)  ⍝ Original array is depth 1, rank 3
1 3
      (≡↓Y)(≢⍴↓Y)  ⍝ Split array is depth 1+1, rank 3-1
2 2
Works in: Dyalog APL

Split is a no-op to a scalar.

      2≡↓2
1

External links

Lessons

Documentation


APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare RootRound
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axisIdentity (Null, Ident)
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)Identity (Lev, Dex)
Quad names Index originComparison toleranceMigration levelAtomic vector