[Jprogramming] Excess axes in 3 3&(0:;._3) i. 4 4 2
Henry Rich
HenryHRich at nc.rr.com
Wed Jul 30 03:11:13 HKT 2008
> -----Original Message-----
> From: programming-bounces at jsoftware.com
> [mailto:programming-bounces at jsoftware.com] On Behalf Of Roger Hui
> Sent: Tuesday, July 29, 2008 1:21 PM
> To: Programming forum
> Subject: Re: [Jprogramming] Excess axes in 3 3&(0:;._3) i. 4 4 2
>
> In the general case of x f;.3 y the left argument x
> is a 2-row table of (movement,:size) with as many
> columns as the rank of y . A list x is treated as
> as if the movements were 1 and the sizes were x,
> and an x with an insufficient number of columns
> is treated as if the missing movements were 1
> and the sizes were the sizes of the corresponding
> axes of y .
I can see that that's what the implementation does; I'm suggesting
that the treatment of x with insufficient columns could be improved.
It would be pleasant if x f;.3 y returned a result rank of
(#$x) + rank of result of f .
>
> > I have asked for an operation to be applied to 3x3 subarrays
> > of the operand; each result returns a scalar, so the result
> > should be rank 2, shape 2 2.
>
> Even in your interpretation the verb is applied to 3 3 2 subarrays,
> not 3 3 subarrays.
Well, this is really the point. Yes, in this case they are 3x3x2. But
I want to think of them as 3x3 arrays of whatever size the _2-cells of
y are. Here, the _2-cells are lists of length 2, so the operation is
on 3x3x2 arrays. But if I code a verb that returns a scalar on
a _2-cell, I would like the result to be shape 3 3 , (shape of y result),
in other words 3 3.
>
> Also, consider:
>
> $ 3 2 <;._3 i.3 7
> 1 6
> $ 3 2 5 4 <;._3 i.3 7 5 13
> 1 6 1 10
>
> Shouldn't the "surplus" unit axes be discarded?
Of course not - I asked you to operate on subcells of that
size, and you happened to find 1. In the case I'm talking
about, I didn't give you a size, for the very reason that
I don't want you to be looking for subarrays on those axes.
THAT's why the axes shouldn't be in the result - I didn't ask
you to do the subarrays thing on them.
I'll just apply ,"_2 to the result, I suppose.
Henry Rich
>
>
>
> ----- Original Message -----
> From: Henry Rich <HenryHRich at nc.rr.com>
> Date: Tuesday, July 29, 2008 9:42
> Subject: [Jprogramming] Excess axes in 3 3&(0:;._3) i. 4 4 2
> To: 'Programming forum' <programming at jsoftware.com>
>
> > $ 3 3&(0:;._3) i. 4 4 2
> > 2 2 1
> >
> > The shape should be 2 2, methinks.
> >
> > I have asked for an operation to be applied to 3x3 subarrays
> > of the operand; each result returns a scalar, so the result
> > should be rank 2, shape 2 2.
> >
> > The interpreter has treated it as if I had written
> > 3 3 2&(0:;._3) which would be applying the verb to 3x3x2
> > subarrays.
> >
> > But if I had wanted that, I should have written it. By
> > omitting the trailing axes I should be indicating that I want
> > to take them in full, and their structure (which might include
> > several axes) should disappear from the result.
> >
> > The Dictionary does not speak to this point, but I think
> > my suggestion here is better than the current design. As it
> > is I have to know how many axes should be left and discard the
> > surplus.
> ----------------------------------------------------------------------
> For information about J forums see
> http://www.jsoftware.com/forums.htm
More information about the Programming
mailing list