That does clear it up (especially the justification of this feature in terms of 
inner vs outer products).  Thank you.

-Dan

Please excuse typos; composed on a handheld device.

On Dec 8, 2012, at 7:55 AM, Raul Miller <rauldmil...@gmail.com> wrote:

> An alternative phrase would be "taking the diagonal".
> 
> The "run together" mechanism relates to the distinction between inner
> and outer product. If you think of each array having an associated
> list of indices along each dimension, normally transpose uses an outer
> product combination of these. But when they are "run together" we do
> not combine them with outer product.  Something like this:
> 
> transpose=: 4 :0
>  dims=. x,~&(<"0^:(1-L.)) (;x) -.~ i. 1 + >./; x
>  inds=. dims {L:0 1 (*/\.1 |.!.1 $y) (* i.)&.> $ y
>  runt=. +&.>/S:1 inds {.~L:0 <./&.> #&>&.> inds
>  (+/&> {runt) {,y
> )
> 
> The value I labeled 'runt' represents the run-together indices.  And
> while the above code represents the transpose operation, the real
> value involves inspecting the intermediate values.  Perhaps something
> like this:
> 
> transpo=: 4 :0
>  smoutput 'dims'; dims=. x,~&(<"0^:(1-L.)) (;x) -.~ i. 1 + >./; x
>  smoutput 'inds'; inds=. dims {L:0 1 (*/\.1 |.!.1 $y) (* i.)&.> $ y
>  smoutput 'runt'; runt=. +&.>/S:1 inds {.~L:0 <./@:(#&>)&.> inds
>  NB. (+/&> {runt) {,y
> )
> 
> I hope this helps,
> 
> -- 
> Raul
> 
> On Fri, Dec 7, 2012 at 6:04 PM, Dan Bron <j...@bron.us> wrote:
>> Something I never wrapped my head around with |: is what exactly the DoJ 
>> means when it says axes are "run together" when the LHA is boxed.
>> 
>> -Dan
>> 
>> 
>> On Dec 7, 2012, at 3:28 PM, Marshall Lochbaum <mwlochb...@gmail.com> wrote:
>> 
>>> 0 1 2&|: will do the job.
>>> 
>>> I recommend reading the dictionary definition of |: through a few times.
>>> In particular, note that 0 1&|: on a rank three array is the same as
>>> 2 0 1&|: , and 0 1 2&|: turns into 3 0 1 2&|: on a rank four array.
>>> 
>>> Marshall
>>> 
>>> On Fri, Dec 07, 2012 at 03:02:49PM -0500, Brian Schott wrote:
>>>> I am working with photographic images which use RGB color.
>>>> The array d is a single image and the array D is now 2 images but I
>>>> want D to contain any number of images. And I want split out the
>>>> R,G, and B part which I can do for d, but I am having difficulty
>>>> with the analogous r, g, and b for D.
>>>> 
>>>>  $d
>>>> 50 50 3
>>>>  $D
>>>> 2 50 50 3
>>>> 
>>>>  'R G B'=: 0 1|: d
>>>>  $G
>>>> 50 50
>>>> 
>>>> What is the mysteryverb that will produce ($g)-:2 50 50 in the
>>>> following expression?
>>>>  'r g b'=: mysteryverb D
>>>> 
>>>> Thanks,
>>>> 
>>>> (B=)
>>>> ----------------------------------------------------------------------
>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to