Index Of

From NARS2000
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Z←L⍳R returns a nested array of indices suitable to indexing L.
L is an array of rank not equal 1.
R is an arbitrary array.
Z is a nested array of shape ⍴R whose items are each integer vectors of length ⍴⍴L, suitable for use as indices to L, except for where the item in R is not found in L, in which case the corresponding item in Z is ⎕IO+⍴L.
This feature extends dyadic iota to non-vector left arguments.
This function is sensitive to ⎕IO and ⎕CT.


For example, in origin-1

      M←2 3⍴'abcdef'
      M⍳'afg'
 1 1  2 3  3 4
      M[M⍳'af']
af
      L←2 ⋄ ⎕FMT L⍳⍳3
┌3──────────┐
│┌0┐ ┌0┐ ┌0┐│
││0│ │0│ │0││
│└~┘ └~┘ └~┘2
└∊──────────┘

Note that this extension preserves the identity R≡L[L⍳R] for all R⊆L.

This extension is implemented via an internal magic function:

    ∇ Z←L #DydIota R;⎕IO;O
[1]   O←⎕IO ⋄ ⎕IO←0
[2]   Z←⊂[0] O+(1+⍴L)⊤(¯1↓,(1+⍴L)↑L)⍳R
    ∇