Table: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
m (Text replacement - "</source>" to "</syntaxhighlight>")
Tags: Mobile edit Mobile web edit
m (Text replacement - "<source" to "<syntaxhighlight")
Tags: Mobile edit Mobile web edit
 
Line 1: Line 1:
{{Built-in|Table|⍪}}, or '''Ravel Items''', is a [[monadic]] [[primitive function]] which returns a [[matrix]] formed by applying [[Ravel]] to each [[major cell]] of the given array. Table shares its [[glyph]] <source lang=apl inline>⍪</syntaxhighlight> with the dyadic function [[catenate|Catenate First]].
{{Built-in|Table|⍪}}, or '''Ravel Items''', is a [[monadic]] [[primitive function]] which returns a [[matrix]] formed by applying [[Ravel]] to each [[major cell]] of the given array. Table shares its [[glyph]] <syntaxhighlight lang=apl inline>⍪</syntaxhighlight> with the dyadic function [[catenate|Catenate First]].


== Examples ==
== Examples ==
Line 5: Line 5:
For arrays of [[rank]] 1 or higher, the result is identical to applying Ravel to major cells:
For arrays of [[rank]] 1 or higher, the result is identical to applying Ravel to major cells:


<source lang=apl>
<syntaxhighlight lang=apl>
       {⍵(⍴⍵)}⍪5⍴⎕A
       {⍵(⍴⍵)}⍪5⍴⎕A
┌─┬───┐
┌─┬───┐
Line 29: Line 29:
A [[scalar]] [[argument]] is converted to a 1-by-1 matrix:
A [[scalar]] [[argument]] is converted to a 1-by-1 matrix:


<source lang=apl>
<syntaxhighlight lang=apl>
       {⍵(⍴⍵)}⍪123
       {⍵(⍴⍵)}⍪123
┌───┬───┐
┌───┬───┐
Line 41: Line 41:


Table is equivalent to [[reshape|reshaping]] with the shape where all trailing axis lengths have been replaced by their [[product]] or, alternatively, the tally concatenated to the [[bound]] divided by the tally:
Table is equivalent to [[reshape|reshaping]] with the shape where all trailing axis lengths have been replaced by their [[product]] or, alternatively, the tally concatenated to the [[bound]] divided by the tally:
<source lang=apl>
<syntaxhighlight lang=apl>
       ⍪2 3 4 2⍴⎕A
       ⍪2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWX
Line 53: Line 53:
</syntaxhighlight>
</syntaxhighlight>


In languages where the [[Rank (operator)|Rank operator]] is available, Table is equivalent to <source lang=apl inline>,⍤¯1</syntaxhighlight>:
In languages where the [[Rank (operator)|Rank operator]] is available, Table is equivalent to <syntaxhighlight lang=apl inline>,⍤¯1</syntaxhighlight>:
<source lang=apl>
<syntaxhighlight lang=apl>
       (,⍤¯1)2 3 4 2⍴⎕A
       (,⍤¯1)2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUV
YZABCDEFGHIJKLMNOPQRSTUV
</syntaxhighlight>
</syntaxhighlight>
In languages where [[function axis]] is available, Table is equivalent to <source lang=apl inline>,[1↓⍳≢⍴Y]</syntaxhighlight>:
In languages where [[function axis]] is available, Table is equivalent to <syntaxhighlight lang=apl inline>,[1↓⍳≢⍴Y]</syntaxhighlight>:
<source lang=apl>
<syntaxhighlight lang=apl>
       {,[1↓⍳≢⍴⍵]⍵}2 3 4 2⍴⎕A
       {,[1↓⍳≢⍴⍵]⍵}2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWX

Latest revision as of 10:59, 11 September 2022

Table (), or Ravel Items, is a monadic primitive function which returns a matrix formed by applying Ravel to each major cell of the given array. Table shares its glyph with the dyadic function Catenate First.

Examples

For arrays of rank 1 or higher, the result is identical to applying Ravel to major cells:

      {⍵(⍴⍵)}⍪5⍴⎕A
┌─┬───┐
│A│5 1│
│B│   │
│C│   │
│D│   │
│E│   │
└─┴───┘
      {⍵(⍴⍵)}⍪3 4⍴⎕A
┌────┬───┐
│ABCD│3 4│
│EFGH│   │
│IJKL│   │
└────┴───┘
      {⍵(⍴⍵)}⍪2 3 4⍴⎕A
┌────────────┬────┐
│ABCDEFGHIJKL│2 12│
│MNOPQRSTUVWX│    │
└────────────┴────┘

A scalar argument is converted to a 1-by-1 matrix:

      {⍵(⍴⍵)}⍪123
┌───┬───┐
│123│1 1│
└───┴───┘

Properties

Table preserves the array's Tally (the number of major cells).

Table is equivalent to reshaping with the shape where all trailing axis lengths have been replaced by their product or, alternatively, the tally concatenated to the bound divided by the tally:

      ⍪2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUV
      {⍵⍴⍨(≢⍵),(×/⍴⍵)÷≢⍵}2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUV
      {⍵⍴⍨(1↑⍴⍵),(×/1↓⍴⍵)}2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUV

In languages where the Rank operator is available, Table is equivalent to ,⍤¯1:

      (,⍤¯1)2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUV

In languages where function axis is available, Table is equivalent to ,[1↓⍳≢⍴Y]:

      {,[1↓⍳≢⍴⍵]⍵}2 3 4 2⍴⎕A
ABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUV

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, Withe, Atop, Over) ∙ Inner ProductPowerAtUnderRankDepthVariantStencilCut (J)
Quad names
Arrays Index originMigration levelAtomic vector
Functions Name classCase convertUnicode convert
Operators SearchReplace