Expand: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Created page with "{{Built-ins|Expand|<nowiki>\</nowiki>|⍀}} is a dyadic function or monadic operator that copies each element of the right argument a given number of times and...")
 
m (Text replacement - "http://help.dyalog.com" to "https://help.dyalog.com")
Line 60: Line 60:
=== Documentation ===
=== Documentation ===


* [http://help.dyalog.com/latest/#Language/Primitive%20Functions/Expand.htm Dyalog]
* [https://help.dyalog.com/latest/#Language/Primitive%20Functions/Expand.htm Dyalog]
* [http://microapl.com/apl_help/ch_020_020_860.htm APLX]
* [http://microapl.com/apl_help/ch_020_020_860.htm APLX]


{{APL built-ins}}[[Category:Primitive functions]][[Category:Functions with first- and last-axis forms]]
{{APL built-ins}}[[Category:Primitive functions]][[Category:Functions with first- and last-axis forms]]

Revision as of 14:37, 14 July 2020

\

Expand (\, ) is a dyadic function or monadic operator that copies each element of the right argument a given number of times and inserts prototype elements, ordering the copies along a specified axis. Typically \ is called Expand while is called "Expand First" or an equivalent.

Expand is usually associated with Replicate (/), and the two functions are related to Mesh and Mask. It shares a glyph with Scan even though Expand is naturally a function and Scan must be an operator. This incongruity is sometimes resolved by making Expand an operator itself, and sometimes by function-operator overloading allowing both syntactic elements to coexist.

Examples

For vector arguments, the number of positive values in the left argument must match the length of the right argument. Each positive value produces copies of the corresponding item on the right argument; a zero or negative value produces one or more prototype elements.

      1 0 3 ¯2 2\'abc'
a bbb  cc

For Boolean left argument, Expand is the right inverse of Replicate, as Expand inserts prototype elements at the exact places which Replicate will remove:

      1 0 0 1 0 1\'abc'
a  b c
      1 0 0 1 0 1/'a  b c'
abc

High-rank arrays

Expand works along a particular axis, which can be specified in languages with function axis and otherwise is the first axis for , and the last axis for \.

      ⎕←A←3 4⍴⎕A
ABCD
EFGH
IJKL
      1 0 3 2 ¯2 1\A
A BBBCC  D
E FFFGG  H
I JJJKK  L
      3 1 ¯1 2⍀A
ABCD
ABCD
ABCD
EFGH
    
IJKL
IJKL

Some implementations allow the right argument to have length 1 along the expansion axis even if other axes have lengths not equal to 1.

      1 ¯2 3 \ ⍪'abc'
a  aaa
b  bbb
c  ccc

External Links

Lessons

Documentation


APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
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 axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)
Quad names Index originComparison toleranceMigration levelAtomic vector