Mastering Array Selection and Indexing in Data Processing

Selecting from Arrays
Richard Park (16/04/2020)
What? Indexing? Pfffft…
 
 
Selecting from Arrays: Audience
 
 
 
Mainly beginners
 
 
Experienced APLers also
 
 
Simple
 
Choose
 
Reach
 
The rank operator 
  
Sane
  
Select
  
Choose
  
Cells
 
 
Simple
 
Choose
 
Reach
 
 
Indexed assignment
 
Modified assignment
 
Optimised
 
A←'YEAST' 
 A[3 4]←'E'
 
A←1 9 
 A[1]+←5
Cells, subarrays and elements
 
   A←2 3 4
⍴⎕
A
Cells, subarrays and elements
 
   
←A←2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
 
3D array
 
 
A ← 
2
 3 4
⍴⎕
A
 
3D Array
Major cell
: Matrix
Cells, subarrays and elements
 
Dimensions / Axes
 
A ← 2 3 4
⍴⎕
A
 
A ← 
2
 3 4
⍴⎕
A
 
A ← 2 
3
 4
⍴⎕
A
 
A ← 2 3 
4
⍴⎕
A
I
J
E
K
F
G
A
B
C
L
H
D
M
N
O
P
 
A ← 2 
3
 4
⍴⎕
A
 
3D Array
Major cell
: Matrix
         1-cell
:
 
Vector
Cells, subarrays and elements
M
N
O
U
V
W
X
Q
R
S
T
P
 
A ← 2 3 
4
⍴⎕
A
3D Array
Major cell
: Matrix
         1-cell
:
 
Vector
         0-cell: 
Scalar
I
J
K
L
E
F
G
H
A
B
C
D
Cells, subarrays and elements
 
I
J
K
E
F
G
A
B
C
L
H
D
A ← 2 3 4
⍴⎕
A
      A[1;;]
ABCD
EFGH
IJKL
Simple indexing
 
I
J
K
E
F
G
A
B
C
L
H
D
A ← 2 3 4
⍴⎕
A
    1
A
ABCD
EFGH
IJKL
Simple indexing
 
E
F
G
H
A ← 2 3 4
⍴⎕
A
      A[1;2;]
EFGH
Simple indexing
 
E
F
G
H
A ← 2 3 4
⍴⎕
A
  1 2
A
EFGH
Simple indexing
 
G
A ← 2 3 4
⍴⎕
A
      A[1;2;3]
G
Simple indexing
 
G
A ← 2 3 4
⍴⎕
A
1 2 3
A
G
Simple indexing
Simple indexing
      cat ← 'ABCD'
      qty ← 1 10 100 1000
      (cat
'AD')
qty
1 1000
 
Simple indexing
      cat ← 'ABCD'
      qty ← 1 10 100 1000
      qty[
cat
'AD']
1 1000
 
U
V
W
Q
R
S
M
N
O
X
T
P
 
I
J
K
E
F
G
A
B
C
L
H
D
A ← 2 3 4
⍴⎕
A
   A[1 2;2 3;3 4]   (1 2)(2 3)(3 4)
A
GH
KL
ST
WX
Simple indexing
 
I
J
K
E
F
G
A
B
C
L
H
D
A ← 2 3 4
⍴⎕
A
   A[1 2;1 3;1 4]   (1 2)(1 3)(1 4)
A
AD
IL
MP
UX
Simple indexing
 
      A ← 2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
   A[1 2;1 3;1 4]   (1 2)(1 3)(1 4)
A
AD
IL
MP
UX
Simple indexing
 
      A ← 2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
   A[
1
 2;1 3;1 4]   (1 2)(1 3)(1 4)
A
AD
IL
MP
UX
Simple indexing
 
      A ← 2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
   A[1 
2
;1 3;1 4]   (1 2)(1 3)(1 4)
A
AD
IL
MP
UX
Simple indexing
 
      A ← 2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
   A[1 2;1 3;1 4]   (1 2)(1 3)(1 4)
A
AD
IL
MP
UX
Simple indexing
 
      A ← 2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
   A[(1 1 1)(2 1 4)(1 3 4)]
APL
Choose indexing
 
      A ← 2 3 4
⍴⎕
A
A
BCD
EFGH
IJK
L
MNO
P
QRST
UVWX
   A[(
1 1 1
)(
2 1 4
)(
1 3 4
)]
APL
Choose indexing
 
   nest←2 2 2
(2 2
'DYAL') 1 2 3 (2 2
'ABCD') ('AE' 'IO' 'U') 'NT' 4
┌──
─────────┐
│DY│1        │
│AL│         │
──
─────────
│2 │3        │
└──
─────────┘
┌──
─────────┐
│AB│┌──
──
─┐│
│CD││AE│IO│U││
│  │└──
──
─┘│
──
─────────
│NT│4        │
└──
─────────┘
Reach indexing
 
      nest[
2 1 2
]
┌─────────┐
│┌──
──
─┐│
││AE│IO│U││
│└──
──
─┘│
└─────────┘
      
2 1 2
┌─────┐
│2 1 2│
└─────┘
Reach indexing
   nest
┌──
─────────┐
│DY│1        │
│AL│         │
──
─────────
│2 │3        │
└──
─────────┘
┌──
─────────┐
│AB│
┌──
──
─┐
│CD│
│AE│IO│U│
│  │
└──
──
─┘
──
─────────
│NT│4        │
└──
─────────┘
 
      nest[
(
2 1 2
)
2
]
┌──┐
│IO│
└──┘
      
(2 1 2)2
┌─────────┐
│┌─────
─┐│
││2 1 2│2││
│└─────
─┘│
└─────────┘
Reach indexing
   nest
┌──
─────────┐
│DY│1        │
│AL│         │
──
─────────
│2 │3        │
└──
─────────┘
┌──
─────────┐
│AB│
┌──
──
─┐
│CD│
│AE│
IO
│U│
│  │
└──
──
─┘
──
─────────
│NT│4        │
└──
─────────┘
 
      nest[
(
2 1 2
)
2
(
2
)]
O
      
(2 1 2)2(2)
┌───────────┐
│┌─────
─┐│
││2 1 2│2│2││
│└─────
─┘│
└───────────┘
Reach indexing
   nest
┌──
─────────┐
│DY│1        │
│AL│         │
──
─────────
│2 │3        │
└──
─────────┘
┌──
─────────┐
│AB│
┌──
──
─┐
│CD│
│AE│
I
O
│U│
│  │
└──
──
─┘
──
─────────
│NT│4        │
└──
─────────┘
 
      
DOMAIN ERROR
(
(2 1 2)2(2))
nest
              
      
(2 1 2)2(2)
┌───────────┐
│┌─────
─┐│
││2 1 2│2│2││
│└─────
─┘│
└───────────┘
Reach indexing
   nest
┌──
─────────┐
│DY│1        │
│AL│         │
──
─────────
│2 │3        │
└──
─────────┘
┌──
─────────┐
│AB│
┌──
──
─┐
│CD│
│AE│
I
O
│U│
│  │
└──
──
─┘
──
─────────
│NT│4        │
└──
─────────┘
 
      ((
2 1 2
))
2
(
2
)
nest
O
      (2 1 2)2(2)
┌─────
─┐
│2 1 2│2│2│
└─────
─┘
Pick 
Reach indexing
   nest
┌──
─────────┐
│DY│1        │
│AL│         │
──
─────────
│2 │3        │
└──
─────────┘
┌──
─────────┐
│AB│
┌──
──
─┐
│CD│
│AE│
I
O
│U│
│  │
└──
──
─┘
──
─────────
│NT│4        │
└──
─────────┘
 
Pick 
Reach indexing
      
←'this' 'that' 'the other thing'
┌────
────
───────────────┐
│this│that│the other thing│
└────
────
───────────────┘
      3
'this' 'that' 'the other thing'
the other thing
 
Simple
Choose
Reach
 
 
Subarrays
 
0-cells
 AKA 
Scalars
 
Nested arrays
 
Indexing as a function 
 you can use operators
 
Squad 
      A←2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
 
      2
⌷⍤
2
A      2
[2]A
EFGH
QRST
 
I
J
K
F
G
L
H
E
D
C
B
A
A ← 2 3 4
⍴⎕
A
   2
[1]A
GH
KL
ST
WX
2
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 
2
 3 4
⍴⎕
A
   
2
[
1
]A
MNOP
QRST
UVWX
Squad with axis 
[]
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 
2 3 4
⍴⎕
A
   
2
⌷⍤
3
A
MNOP
QRST
UVWX
Squad with rank 
⌷⍤
 
I
J
K
E
F
G
L
H
A
B
C
D
A ← 2 
3
 4
⍴⎕
A
   
2
[
2
]A
EFGH
QRST
Squad with axis 
[]
 
I
J
K
E
F
G
L
H
A
B
C
D
A ← 
2
 3 4
⍴⎕
A
   
2
⌷⍤
2
A
EFGH
QRST
Squad with rank 
⌷⍤
U
V
W
Q
R
S
M
N
O
X
T
P
 
I
J
K
E
F
G
L
H
A
B
C
D
A ← 
2
 3 4
⍴⎕
A
   
2
⌷⍤
2
A
EFGH
QRST
Squad with rank 
⌷⍤
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 2 3 
4
⍴⎕
A
   
2
[
3
]A
BFJ
NRV
Squad with axis 
[]
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 2 3 
4
⍴⎕
A
   
2
⌷⍤
1
A
BFJ
NRV
Squad with rank 
⌷⍤
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 2 3 
4
⍴⎕
A
   
2
⌷⍤
1
A
BFJ
NRV
Squad with rank 
⌷⍤
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 2 3 
4
⍴⎕
A
   
2
⌷⍤
1
A
BFJ
NRV
Squad with rank 
⌷⍤
U
V
W
Q
R
S
M
N
O
X
T
P
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 2 3 
4
⍴⎕
A
   
2
⌷⍤
1
A
BFJ
NRV
Squad with rank 
⌷⍤
U
V
W
Q
R
S
M
N
O
X
T
P
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 2 3 
4
⍴⎕
A
   
2
⌷⍤
1
A
BFJ
NRV
Squad with rank 
⌷⍤
U
V
W
Q
R
S
M
N
O
X
T
P
 
I
J
K
L
E
F
G
H
A
B
C
D
A ← 2 3 
4
⍴⎕
A
   
2
⌷⍤
1
A
BFJ
NRV
Squad with rank 
⌷⍤
Indexing as a function → you can use operators
 
Squad 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A
2
 
3
 
4
A
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
 
 
 
 
 
 
 
 
 
 
2
1
A
B
F
J
N
R
V
 
 
 
 
 
2
[
3
]
A
Indexing as a function → you can use operators
 
Squad 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A
2
 
3
 
4
A
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
      
2
⌷⍤
2
A
     2
[2]A
EFGH
QRST
  
←n←
3 5
⍴⍳
15
1  6 11
2  7 12
3  8 13
4  9 14
5 10 15
 
Squad with rank 
⌷⍤
  
1 3 4
⌷⍤
0 2
n
1  6 11
3  8 13
4  9 14
  
←n←
3 5
⍴⍳
15
1  6 11
2  7 12
3  8 13
4  9 14
5 10 15
 
Squad with rank 
⌷⍤
  
1 3 4
⌷⍤
0 99
n
1  6 11
3  8 13
4  9 14
   I ← 
⌷⍤
0 99
 
"Sane" indexing
  
←n←
3 5
⍴⍳
15
1  6 11
2  7 12
3  8 13
4  9 14
5 10 15
 
      (
1 3 4)
n   
 "Insane"
1 6 11
3 8 13
4 9 14
 
      1 3 4 I n
1 6 11
3 8 13
4 9 14
   I ← 
⌷⍤
0 99
 
"Sane" indexing
  
←n←
3 5
⍴⍳
15
1  6 11
2  7 12
3  8 13
4  9 14
5 10 15
      1 3 4 I n
1 6 11
3 8 13
4 9 14
      1 0 1 1 0 
 n
1 6 11
3 8 13
4 9 14
   'APPLE'[1 3 4]      
 Intuitive, beginner friendly
APL
   1 0 1 1 0/'APPLE'   
 Booleans
APL
 
"Sane" indexing
 
 
   1 3 4 I 'APPLE'     
 Sane
APL
   1 0 1 1 0
'APPLE'   
 Rank polymorphic
APL
 
"Sane" indexing
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
   1 I A    1
A    A[1;;]    1
⌷⍤
0 99
A
ABCD
EFGH
IJKL
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
      (
1 2
)(
2 3
) I A
EFGH
UVWX
      A[(1 2,¨2 3)
.,
4]
EFGH
UVWX
   
←A←2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
   
←A←2 3 4
⍴⎕
A
ABCD
EFG
H
IJKL
MNOP
QRST
UVWX
      
(
1 2 4
)(
2 3
) I A
H
UVWX
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
   
←A←2 3 4
⍴⎕
A
ABCD
EFG
H
IJKL
MNOP
QRST
UVWX
      
(
1 2 4
)(
2 3
) I A
H
UVWX
   r←
≢⍴
A
3
   
k←0
   r-k
3
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
   
←A←2 3 4
⍴⎕
A
ABCD
EFG
H
IJKL
MNOP
QRST
UVWX
      
(
1 2 4
)(
2 3
) I A
H
UVWX
   r←
≢⍴
A
3
   
k←1
   r-k
2
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
      
(1 2 4)(2 3) I A
H
UVWX
   NB. The "from" verb in J
   (0 1 3;1 2) { A
H
UVWX
I ← ((
⊃⊣
)
⌷⊢
)
0 99
 
The Indexer AKA Select
      
1(1 3)
A
ABCD
IJKL
   NB. The "from" verb in J
   (<0;0 2) { A
ABCD
IJKL
  
←A←2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
 
Squad with rank 
⌷⍤
 
  
(↑(1 1 1)(2 1 4)(1 3 4))
⌷⍤
1 99
A
APL
   Choose ← 
⌷⍤
1 99
  
←A←2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
 
Squad with rank 
⌷⍤
  
3
⌷⍤
99 2
A
IJKL
UVWX
   Cells ← 
⌷⍤
99 k
  
←A←2 3 4
⍴⎕
A
ABCD
EFGH
IJ
K
L
MNOP
QRST
UV
W
X
 
Squad with rank 
⌷⍤
  
3
 
3
⌷⍤
99 2
A
KW
   Cells ← 
⌷⍤
99 k
  
←A←2 3 4
⍴⎕
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
 
Squad with rank 
⌷⍤
  
(
2 3
)
⌷⍤
99 2
A
EFGH
IJKL
QRST
UVWX
   Cells ← 
⌷⍤
99 k
Selecting from arrays
 
[ ]
[]
⌷⍤
 
 
I ← 
⌷⍤
0 99 
 Sane
I ← ((
⊃⊣
)
⌷⊢
)
0 99
Choose ← 
⌷⍤
1 99
Cells ← 
⌷⍤
k
Performance
 
Pre v18.0
      
⌷⍤
0 k
New in v18.0
      
⌷⍤
1 99
      
⌷⍤
99 k
1=
≢⍴⍺
:
⌷⍤
k
 
Indexed assignment
      
A
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
 
Indexed assignment
      
A[1 2;1 3;1 4]←'
'
BC
EFGH
JK
NO
QRST
VW
 
Search: Indexed assignment
      
help.dyalog.com
 
Selective assignment
Functions for Selective Assignment
 
Take
 
Drop
, 
 
Ravel
 
 
Table
⌽⊖
 
 
Reverse, Rotate
 
 
Reshape
 
 
Disclose, Pick
 
 
Transpose (Monadic and Dyadic)
/
 
 
Replicate
\
 
 
Expand
 
 
Index
 
 
Enlist (
ML≥1)
 
Search: Selective assignment
      
help.dyalog.com
 
Merge arrays with 
@
     
0@((,1 3 5
.,1 3),(2 4
.,2))
n
0  6  0
2  0 12
0  8  0
4  0 14
0 10  0
 
Merge arrays with 
@
     
-@(2|
)
n
¯1  6 ¯11
 2 ¯7  12
¯3  8 ¯13
 4 ¯9  14
¯5 10 ¯15
 
Selecting from arrays
[ ]
[]
⌷⍤
 
I ← 
⌷⍤
0 99 
 Sane
I ← ((
⊃⊣
)
⌷⊢
)
0 99
Choose ← 
⌷⍤
1 99
Cells ← 
⌷⍤
k
Next Week: BAA Webinar
Thursday 23
rd
 April 
16:00 BST
Introducing qWC Alpha 0.4 – MJH Software Services
https://britishaplassociation.org/webinar-schedule-2020/
 
Next Dyalog Webinar
Thursday 30
th
 April 
16:00 BST
Introducing Dyalog version 18.0 
– Morten Kromberg
 
dyalog.tv
 
 
I
J
K
E
F
G
A
B
C
L
H
D
U
V
W
Q
R
S
M
N
O
X
T
P
A ← 2 3 4
⍴⎕
A
Slide Note
Embed
Share

Unlock the power of array selection and indexing techniques through a series of educational slides. Explore different methods for selecting elements from arrays and dive into various indexing strategies, suitable for beginners and experienced professionals alike. Gain insights into cell structures, subarrays, and major elements within 3D arrays, along with practical examples showcasing efficient indexing practices in data manipulation.

  • Array selection
  • Indexing
  • Data processing
  • 3D arrays
  • Beginners

Uploaded on Sep 19, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. 1 Selecting from Arrays Richard Park (16/04/2020)

  2. 2 What? Indexing? Pfffft

  3. 3 Selecting from Arrays: Audience Mainly beginners Experienced APLers also

  4. 4 Simple Choose Reach The rank operator Sane Select Choose Cells

  5. 5 Simple Choose Reach Indexed assignment A 'YEAST' A[3 4] 'E' Modified assignment A 1 9 A[1]+ 5 Optimised

  6. 8 Cells, subarrays and elements 3D Array Major cell: Matrix Dimensions / Axes A 2 3 4 A A 2 3 4 A A 2 3 4 A A 2 3 4 A A 2 3 4 A M N O P A A B B C C D D Q R S T E E F F G G H H U V W X I I J J K K L L

  7. 9 Cells, subarrays and elements 3D Array Major cell: Matrix 1-cell:Vector A 2 3 4 A M N O P A B C D Q R S T E F G H U V W X I J K L

  8. 10 Cells, subarrays and elements 3D Array Major cell: Matrix 1-cell:Vector 0-cell: Scalar A 2 3 4 A M N O P A B C D Q R S T E F G H U V W X I J K L

  9. 11 Simple indexing A 2 3 4 A A[1;;] ABCD EFGH IJKL A B C D E F G H I J K L

  10. 12 Simple indexing A 2 3 4 A 1 A ABCD EFGH IJKL A B C D E F G H I J K L

  11. 13 Simple indexing A 2 3 4 A A[1;2;] EFGH E F G H

  12. 14 Simple indexing A 2 3 4 A 1 2 A EFGH E F G H

  13. 15 Simple indexing A 2 3 4 A A[1;2;3] G G

  14. 16 Simple indexing A 2 3 4 A 1 2 3 A G G

  15. 19 Simple indexing A 2 3 4 A A[1 2;2 3;3 4] (1 2)(2 3)(3 4) A GH KL ST WX M N O P A B C D Q R S T E F G H U V W X I J K L

  16. 20 Simple indexing A 2 3 4 A A[1 2;1 3;1 4] (1 2)(1 3)(1 4) A AD IL MP UX M N O P A B C D Q R S T E F G H U V W X I J K L

  17. 21 Simple indexing A 2 3 4 A ABCD EFGH IJKL MNOP QRST UVWX A[1 2;1 3;1 4] (1 2)(1 3)(1 4) A AD IL MP UX

  18. 25 Choose indexing A 2 3 4 A ABCD EFGH IJKL MNOP QRST UVWX A[(1 1 1)(2 1 4)(1 3 4)] APL

  19. 26 Choose indexing A 2 3 4 A ABCD EFGH IJKL MNOP QRST UVWX A[(1 1 1)(2 1 4)(1 3 4)] APL

  20. 27 Reach indexing nest 2 2 2 (2 2 'DYAL') 1 2 3 (2 2 'ABCD') ('AE' 'IO' 'U') 'NT' 4 DY 1 AL 2 3 AB CD AE IO U NT 4

  21. 28 Reach indexing nest[ 2 1 2] AE IO U 2 1 2 2 1 2 nest DY 1 AL 2 3 AB CD AE IO U NT 4

  22. 29 Reach indexing nest[ (2 1 2)2] IO (2 1 2)2 2 1 2 2 nest DY 1 AL 2 3 AB CD AE IO U NT 4

  23. 30 Reach indexing nest[ (2 1 2)2(2)] nest DY 1 AL 2 3 AB CD AE IO U NT 4 O (2 1 2)2(2) 2 1 2 2 2

  24. 31 Reach indexing nest DY 1 AL 2 3 AB CD AE IO U NT 4 DOMAIN ERROR ( (2 1 2)2(2)) nest (2 1 2)2(2) 2 1 2 2 2

  25. 32 Pick Reach indexing ((2 1 2))2(2) nest nest DY 1 AL 2 3 AB CD AE IO U NT 4 O (2 1 2)2(2) 2 1 2 2 2

  26. 33 Pick Reach indexing 'this' 'that' 'the other thing' this that theother thing 3 'this' 'that' 'the other thing' the other thing

  27. 34 Simple Subarrays Choose 0-cells AKA Scalars Reach Nested arrays

  28. 35 Squad Indexing as a function you can use operators A 2 3 4 A ABCD EFGH IJKL MNOP QRST UVWX 2 2 A 2 [2]A EFGH QRST

  29. 37 Squad with axis [] A 2 3 4 A 2 [1]A MNOP QRST UVWX M N O P A B C D Q R S T E F G H U V W X I J K L

  30. 38 Squad with rank A 2 3 4 A 2 3 A MNOP QRST UVWX M N O P A B C D Q R S T E F G H U V W X I J K L

  31. 39 Squad with axis [] A 2 3 4 A 2 [2]A EFGH QRST M N O P A B C D Q R S T E F G H U V W X I J K L

  32. 40 Squad with rank A 2 3 4 A 2 2 A EFGH QRST M N O P A B C D Q R S T E F G H U V W X I J K L

  33. 41 Squad with rank A 2 3 4 A 2 2 A EFGH QRST M N O P A B C D Q R S T E F G H U V W X I J K L

  34. 42 Squad with axis [] A 2 3 4 A 2 [3]A BFJ NRV M N O P A B C D Q R S T E F G H U V W X I J K L

  35. 43 Squad with rank A 2 3 4 A 2 1 A BFJ NRV M N O P A B C D Q R S T E F G H U V W X I J K L

  36. 44 Squad with rank A 2 3 4 A 2 1 A BFJ NRV M N O P A B C D Q R S T E F G H U V W X I J K L

  37. 45 Squad with rank A 2 3 4 A 2 1 A BFJ NRV M N O P A B C D Q R S T E F G H U V W X I J K L

  38. 46 Squad with rank A 2 3 4 A 2 1 A BFJ NRV M N O P A B C D Q R S T E F G H U V W X I J K L

  39. 47 Squad with rank A 2 3 4 A 2 1 A BFJ NRV M N O P A B C D Q R S T E F G H U V W X I J K L

  40. 48 Squad with rank A 2 3 4 A 2 1 A BFJ NRV M N O P A B C D Q R S T E F G H U V W X I J K L

  41. 51 Squad with rank n 3 5 15 1 3 4 0 2 n 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 1 6 11 3 8 13 4 9 14

  42. 52 Squad with rank n 3 5 15 1 3 4 0 99 n 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 1 6 11 3 8 13 4 9 14

  43. 53 "Sane" indexing I 0 99 n 3 5 15 ( 1 3 4) n "Insane" 1 6 11 3 8 13 4 9 14 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 1 3 4 I n 1 6 11 3 8 13 4 9 14

  44. 54 "Sane" indexing I 0 99 n 3 5 15 1 3 4 I n 1 6 11 3 8 13 4 9 14 1 0 1 1 0 n 1 6 11 3 8 13 4 9 14 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15

  45. 55 "Sane" indexing 'APPLE'[1 3 4] Intuitive, beginner friendly APL 1 0 1 1 0/'APPLE' Booleans APL

  46. 56 "Sane" indexing 1 3 4 I 'APPLE' Sane APL 1 0 1 1 0 'APPLE' Rank polymorphic APL

  47. 57 The Indexer AKA Select I (( ) ) 0 99

  48. 58 The Indexer AKA Select I (( ) ) 0 99 1 I A 1 A A[1;;] 1 0 99 A ABCD EFGH IJKL

  49. 59 The Indexer AKA Select I (( ) ) 0 99 A 2 3 4 A ABCD EFGH IJKL MNOP QRST UVWX (1 2)(2 3) I A EFGH UVWX A[(1 2, 2 3) ., 4] EFGH UVWX

  50. 60 The Indexer AKA Select I (( ) ) 0 99 A 2 3 4 A ABCD EFGH IJKL MNOP QRST UVWX (1 2 4)(2 3) I A H UVWX

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#