Actually group2 and f agree. Howeer this was an earlier wrong version of "group"
(0.35 0.3 0.3 group2 i.20)-:0.35 0.3 0.3 f i.20
1

Now look at a similar explicit version of Ric's "real group"   
   assignGrp=: +/\@(* #) I. i.@#@]
   group=: assignGrp </. ]
   g=: 13 :'((+/\x*#y)I.y)</.y'
      
   (0.35 0.35 0.3 group i.14)-:0.35 0.35 0.3 g i.14
1
   
   g
] </.~ ] I.~ [: +/\ [ * [: # ]
   

Linda
-----Original Message-----
From: Programming [mailto:[email protected]] On Behalf 
Of Raul Miller
Sent: Saturday, December 16, 2017 12:18 AM
To: Programming forum <[email protected]>
Subject: Re: [Jprogramming] Splitting an Array into several arrays

When you say things like this, it's good to provide an example of what you're 
talking about.

Perhaps:

   0.35 0.3 0.3 group2 'ABCDEFGHIJKLMN'
┌─────┬─────┬────┐
│ABCDE│FGHIJ│KLMN│
└─────┴─────┴────┘
   0.35 0.3 0.3 f 'ABCDEFGHIJKLMN'
|domain error: f

Thanks,

--
Raul


On Sat, Dec 16, 2017 at 12:14 AM, Ric Sherlock <[email protected]> wrote:
> Note that group2 and f are not equivalent.
>
> On 16/12/2017 00:05, "Linda Alvord" <[email protected]> wrote:
>
>> Ric,
>>
>> Here's a response to an old thread which I took from my "things to think
>> about collection:
>>
>> group2=:(+/\@(* #) I. i.@#@]) </. ]
>>    0.35 0.3 0.3 group2 i.14
>> ┌─────────┬─────────┬───────────┐
>> │0 1 2 3 4│5 6 7 8 9│10 11 12 13│
>> └─────────┴─────────┴───────────┘
>>    f=: 13 : '(x (] I.~ [: +/\ [ * [: # ]) y)</. y'
>>    0.35 0.3 0.3 f i.14
>> ┌─────────┬─────────┬───────────┐
>> │0 1 2 3 4│5 6 7 8 9│10 11 12 13│
>> └─────────┴─────────┴───────────┘
>>
>>    group2
>> (+/\@(* #) I. i.@#@]) </. ]
>>    f
>> ] </.~ ] I.~ [: +/\ [ * [: # ]
>>
>> I was surprised at how neat f turned out when I wrote an explicit
>> definition of my version of you way to group the numbers.
>>
>> Linda
>>
>>
>> -----Original Message-----
>> From: Programming [mailto:[email protected]] On
>> Behalf Of Ric Sherlock
>> Sent: Saturday, October 21, 2017 3:21 PM
>> To: Programming JForum <[email protected]>
>> Subject: Re: [Jprogramming] Splitting an Array into several arrays
>>
>> Jon,
>> The following assigns each of the data points to a group, then boxes those
>> groups using key.
>>
>>    assignGrp=: +/\@(* #) I. i.@#@]
>>    group=: assignGrp </. ]
>>    0.35 0.35 0.3 group i.14
>> ┌─────────┬─────────┬───────────┐
>> │0 1 2 3 4│5 6 7 8 9│10 11 12 13│
>> └─────────┴─────────┴───────────┘
>>
>> On 21/10/2017 02:14, "'Jon Hough' via Programming" <
>> [email protected]> wrote:
>>
>> > Hi,
>> >
>> > What I am really after is a verb that splits by percentage. To give a
>> > concrete uses case:
>> > I have a dataset, which I wish to split into training set, validation
>> > set, and testing set.
>> >
>> > I want 35% of the datapoints to go in the training set, 35% go in the
>> > validation set, the rest go in the test set. (Just example numbers).
>> >
>> >
>> > No need to worry about shuffling, randomizing etc, I am assuming the
>> > data is sufficiently random.
>> > As Raul said, I can simplify slightly by just using the size of the
>> > dataset as the right argument.
>> >
>> > --------------------------------------------
>> > On Fri, 10/20/17, Erling Hellenäs <[email protected]> wrote:
>> >
>> >  Subject: Re: [Jprogramming] Splitting an Array into several arrays
>> >  To: [email protected]
>> >  Date: Friday, October 20, 2017, 10:06 PM
>> >
>> >  Hi all !
>> >
>> >  A splitSubs with CutN could possibly look like
>> >  this:
>> >
>> >  splitSubsE=: ([ (([:
>> >  # [) {. ]) ([: <. 0.5 + [: }: [ * [: # ]) ( [ , ([:
>> >  # ]) - [: +/ [) ]) CutN ]
>> >
>> >      (i.0) splitSubsE i.0
>> >
>> >      (,55) splitSubsE ,5
>> >  ┌─┐
>> >  │5│
>> >  └─┘
>> >      split
>> >  splitSubsE i.0
>> >  ┌┬┬┐
>> >  ││││
>> >  └┴┴┘
>> >      split splitSubsE i.1
>> >  ┌┬┬─┐
>> >  │││0│
>> >  └┴┴─┘
>> >      split
>> >  splitSubsE i.2
>> >  ┌─┬─┬┐
>> >  │0│1││
>> >  └─┴─┴┘
>> >      split
>> >  splitSubsE i.3
>> >  ┌─┬─┬─┐
>> >  │0│1│2│
>> >  └─┴─┴─┘
>> >
>> >  split splitSubsE i.4
>> >  ┌─┬─┬───┐
>> >  │0│1│2 3│
>> >  └─┴─┴───┘
>> >
>> >  Cheers
>> >
>> >  Erling
>> >  Hellenäs
>> >
>> >
>> >  Den 2017-10-20 kl. 14:11, skrev Erling
>> >  Hellenäs:
>> >  > Hi all!
>> >  >
>> >  > I looked for a
>> >  version of Cut which takes the number of items in each  > group as
>> > left argument. I didn't find  one. I think it is what you most  >
>> > often  need, because it allows groups with zero length content.
>> >  >
>> >  > I made CutN as an
>> >  illustration:
>> >  >
>> >  >
>> >  CutN=:((# {. 0 , [: }: [: +/\ ])([: < [ + [: i. ])"0  ])@:[ {&.>/ [:
>> > < ]  >
>> >  >    (i.0) CutN i.0
>> >  >
>> >  >    (,0) CutN i.0
>> >  > ┌┐
>> >  > ││
>> >  > └┘
>> >  >    (,1) CutN
>> >  10+i.1
>> >  > ┌──┐
>> >  > │10│
>> >  >
>> >  └──┘
>> >  >    0 2 CutN 10+i.2
>> >  > ┌┬─────┐
>> >  > ││10 11│
>> >  >
>> >  └┴─────┘
>> >  >    2 5 0
>> >  CutN 10+i.7
>> >  >
>> >  ┌─────┬──────────────┬┐
>> >  > │10 11│12 13 14 15 16││
>> >  >
>> >  └─────┴──────────────┴┘
>> >  >    0 7 0 CutN 10+i.7
>> >  >
>> >  ┌┬────────────────────┬┐
>> >  > ││10 11 12 13 14 15 16││
>> >  >
>> >  └┴────────────────────┴┘
>> >  >
>> >  > Cheers,
>> >  >
>> >  > Erling Hellenäs
>> >  >
>> >  >
>> >  >
>> >  Den 2017-10-20 kl. 10:42, skrev 'Jon Hough' via
>> >  Programming:
>> >  >> The problem:
>> >  >> Let X be an array.
>> >  >> X=: i. 50 NB.  example
>> >  >>
>> >  >> Let
>> >  'split' be the percentages that each subarray takes  from X,  >>
>> > sequentially  >> e.g  >> split =:
>> >  0.35 0.35 0.3 NB. first array takes 35% , second sub array
>> >
>> >  >> takes  35%, third takes 30%
>> >  >> So in the end
>> >  >>
>> >  >> My
>> >  solution
>> >  >>
>> >  >>
>> >  splitSubs =:
>> >  -.~&.>/\@:(i.&.>"0@:<"0)@:}.@:>.@:((+/\
>> >  - ])@:[ (* , ])
>> >  >> #@:])
>> >  >>
>> >  >> split
>> >  splitSubs X
>> >  >>
>> >  >>
>> >  >> This gives 3
>> >  boxed arrays. Each array holds the indices to take from  X.
>> >  >>
>> >  >>
>> >  There is a slight problem in that the first and second  subarrays  >>
>> > have different  >> length, due to rounding error. I am  not too
>> > bothered about that  >> since,  depending on the size of X and the
>> > percentages, this is  >> unavoidable.
>> >  >>
>> >  >> Any more
>> >  succinct, nicer solutions?
>> >  >>
>> >
>> > ----------------------------------------------------------------------
>> >  >> For information about J forums see
>> > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
>> >  >
>> >  >
>> >
>> > ----------------------------------------------------------------------
>> >  > For information about J forums see
>> > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
>> >
>> >
>> > ----------------------------------------------------------------------
>> >  For information about J forums see
>> > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
>> > ----------------------------------------------------------------------
>> > For information about J forums see 
>> > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
>> ----------------------------------------------------------------------
>> For information about J forums see 
>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
>> ----------------------------------------------------------------------
>> For information about J forums see 
>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
> ----------------------------------------------------------------------
> For information about J forums see 
> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
----------------------------------------------------------------------
For information about J forums see 
https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C60fdad7d3232412dc24908d544447895%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1%2Ba5Nr0qpCmrQ%3D&reserved=0
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to