Table: Difference between revisions
No edit summary |
|||
Line 3: | Line 3: | ||
== Examples == | == Examples == | ||
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> | <source lang=apl> | ||
Line 49: | Line 49: | ||
YZABCDEFGHIJKLMNOPQRSTUV | YZABCDEFGHIJKLMNOPQRSTUV | ||
{⍵⍴⍨(1↑⍴⍵),(×/1↓⍴⍵)}2 3 4 2⍴⎕A | {⍵⍴⍨(1↑⍴⍵),(×/1↓⍴⍵)}2 3 4 2⍴⎕A | ||
ABCDEFGHIJKLMNOPQRSTUVWX | |||
YZABCDEFGHIJKLMNOPQRSTUV | |||
</source> | |||
In languages where the [[Rank (operator)|Rank operator]] is available, Table is equivalent to <source lang=apl inline>,⍤¯1</source>: | |||
<source lang=apl> | |||
(,⍤¯1)2 3 4 2⍴⎕A | |||
ABCDEFGHIJKLMNOPQRSTUVWX | |||
YZABCDEFGHIJKLMNOPQRSTUV | |||
</source> | |||
In languages where [function axis] is available, Table is equivalent to <source lang=apl inline>,[1↓⍳≢⍴Y]</source>: | |||
<source lang=apl> | |||
{,[1↓⍳≢⍴⍵]⍵}2 3 4 2⍴⎕A | |||
ABCDEFGHIJKLMNOPQRSTUVWX | ABCDEFGHIJKLMNOPQRSTUVWX | ||
YZABCDEFGHIJKLMNOPQRSTUV | YZABCDEFGHIJKLMNOPQRSTUV |
Revision as of 08:43, 9 July 2020
⍪
|
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