Index Of: Difference between revisions
From NARS2000
Jump to navigationJump to search
Sudleyplace (talk | contribs) No edit summary |
Sudleyplace (talk | contribs) No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
< | <table border="1" cellpadding="5" cellspacing="0" rules="none" summary=""> | ||
<tr> | |||
<td> | |||
<table border="0" cellpadding="5" cellspacing="0" summary=""> | |||
<tr> | |||
<td valign="top"><apll>Z←L⍳R</apll></td> | |||
<td></td> | |||
<td></td> | |||
<td>returns a nested array of indices suitable to indexing <apll>L</apll>.</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><apll>L</apll> is an array of rank not equal 1.</td> | |||
</tr> | |||
<tr> | |||
<td><apll>R</apll> is an arbitrary array.</td> | |||
</tr> | |||
<tr> | |||
<td><apll>Z</apll> is a nested array of shape <apll>⍴R</apll> whose items are each integer vectors of length <apll>⍴⍴L</apll>, suitable for use as indices to <apll>L</apll>, except for where the item in <apll>R</apll> is not found in <apll>L</apll>, in which case the corresponding item in <apll>Z</apll> is <apll>⎕IO+⍴L</apll>.</td> | |||
</tr> | |||
<tr> | |||
<td>This feature extends dyadic iota to non-vector left arguments.</td> | |||
</tr> | |||
<tr> | |||
<td>This function is sensitive to <apll>⎕IO</apll> and <apll>⎕CT</apll>.</td> | |||
</tr> | |||
</table> | |||
<br /> | |||
<p>For example, in origin-1</p> | |||
< | <apll><pre> | ||
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 | |||
└∊──────────┘</pre></apll> | |||
< | <p>Note that this extension preserves the identity <apll>R≡L[L⍳R]</apll> for all <apll>R⊆L</apll>.</p> | ||
<p>This extension is implemented via an internal magic function:</p> | <p>This extension is implemented via an internal magic function:</p> | ||
<apll> | <apll><pre> | ||
∇ Z←L #DydIota R;⎕IO;O | |||
[1] O←⎕IO ⋄ ⎕IO←0 | |||
[2] Z←⊂[0] O+(1+⍴L)⊤(¯1↓,(1+⍴L)↑L)⍳R | |||
∇</pre></apll> |
Latest revision as of 17:33, 15 April 2018
|
||||
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 ∇