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