Take with Axes R←X↑[K]Y

Y may be any non-scalar array.  X must be a simple integer scalar or vector.  K is a vector of zero or more axes of Y.

R is an array of the first or last elements of Y taken along the axes K depending on whether the corresponding element of X is positive or negative respectively.

The rank of R is the same as the rank of Y:

      ⍴⍴R ←→ ⍴⍴Y

The size of each axis of R is determined by the corresponding element of X:

      (⍴R)[,K] ←→ |,X

Examples

      ⎕←M←2 3 4⍴⍳24
 1  2  3  4
 5  6  7  8
 9 10 11 12
 
13 14 15 16
17 18 19 20
21 22 23 24
 
      2↑[2]M
 1  2  3  4
 5  6  7  8
 
13 14 15 16
17 18 19 20
 
      2↑[3]M
 1  2
 5  6
 9 10
 
13 14
17 18
21 22
 
 
      2 ¯2↑[3 2]M
 5  6
 9 10
 
17 18
21 22