Reverse

From APL Wiki
Revision as of 14:39, 1 November 2019 by Miraheze>Marshall (Created page with "{{Primitive|⌽ ⊖|Reverse}} is a monadic function which reorders elements of the argument to go in the opposite direction along a specified axis. The name Revers...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Primitive is a monadic function which reorders elements of the argument to go in the opposite direction along a specified axis. The name Reverse is typically used for the primitive , which reverses along the last axis, while , which reverses along the first axis, is called "Reverse First", "Reverse-down", or similar. In APLs with function axis, either for may use a specified axis which overrides this default choice of axis. In the leading axis model, specifying an axis is discouraged in favor of using with the Rank operator.

Contents

Examples

Reverse flips a matrix horizontally, changing elements to go right to left, and Reverse First flip vertically, so the elements are reordered top to bottom.

      x  10 20 30 ∘.+ 6
      x
11 12 13 14 15 16
21 22 23 24 25 26
31 32 33 34 35 36
      x
16 15 14 13 12 11
26 25 24 23 22 21
36 35 34 33 32 31
      x
31 32 33 34 35 36
21 22 23 24 25 26
11 12 13 14 15 16

Since a vector only has one axis, any form of Reverse will reverse along this axis.

       'Backwards text'
txet sdrawkcaB
      ⊖⌽ 'Backwards text'       ⍝ One reverse undoes the other
Backwards text

Reverse with a specified axis can reverse along any of the three dimensions of the array below.

      a2 3 6⍴⍳36
 1  2  3  4  5  6
 7  8  9 10 11 12
13 14 15 16 17 18

19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
      ([1]a)([2]a)([3]a)
┌─────────────────┬─────────────────┬─────────────────┐
19 20 21 22 23 2413 14 15 16 17 18 6  5  4  3  2  1
25 26 27 28 29 30 7  8  9 10 11 1212 11 10  9  8  7
31 32 33 34 35 36 1  2  3  4  5  618 17 16 15 14 13
                                                   
 1  2  3  4  5  631 32 33 34 35 3624 23 22 21 20 19
 7  8  9 10 11 1225 26 27 28 29 3030 29 28 27 26 25
13 14 15 16 17 1819 20 21 22 23 2436 35 34 33 32 31
└─────────────────┴─────────────────┴─────────────────┘

The Rank operator can also be used to reverse along a particular axis. While Rank has no effect on Reverse (last), Reverse First with rank k reverses the first axis of each k-cell, or the 1+r-k'th axis of a rank-r array.

      2a                     ⍝ Same as ⌽
 5  4  3  2  1  0
11 10  9  8  7  6
17 16 15 14 13 12

23 22 21 20 19 18
29 28 27 26 25 24
35 34 33 32 31 30
      2a                    ⍝ Same as ⌽[2]
12 13 14 15 16 17
 6  7  8  9 10 11
 0  1  2  3  4  5

30 31 32 33 34 35
24 25 26 27 28 29
18 19 20 21 22 23
      (3a)(2a)(1a)
┌─────────────────┬─────────────────┬─────────────────┐
19 20 21 22 23 2413 14 15 16 17 18 6  5  4  3  2  1
25 26 27 28 29 30 7  8  9 10 11 1212 11 10  9  8  7
31 32 33 34 35 36 1  2  3  4  5  618 17 16 15 14 13
                                                   
 1  2  3  4  5  631 32 33 34 35 3624 23 22 21 20 19
 7  8  9 10 11 1225 26 27 28 29 3030 29 28 27 26 25
13 14 15 16 17 1819 20 21 22 23 2436 35 34 33 32 31
└─────────────────┴─────────────────┴─────────────────┘

Reversing a scalar has no effect: there are no axes to reverse along.

      1.1
1.1

External links

Lessons

Documentation