Index Of: Difference between revisions

From NARS2000
Jump to navigationJump to search
No edit summary
No edit summary
Line 23: Line 23:
<tr>
<tr>
   <td>This feature extends dyadic iota to rank &gt; 1 left arguments.</td>
   <td>This feature extends dyadic iota to rank &gt; 1 left arguments.</td>
</tr>
<tr>
  <td>This function is sensitive to <apll>⎕IO</apll>.</td>
</tr>
</tr>
</table>
</table>

Revision as of 15:36, 26 May 2013

Z←L⍳R returns a nested array of indices suitable to indexing L.
L is an array of rank > 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 rank > 1 left arguments.
This function is sensitive to ⎕IO.


For example, in origin-1

      M←2 3⍴'abcdef'
      M⍳'afg'
 1 1  2 3  3 4
      M[M⍳'af']
af

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
    ∇