Ric, I missed this message yesterday, but this works: X=:0.5 0.25 0.25
x h 23?54 ┌─────────────────────────────┬────────────────┬────────────────┐ │27 47 3 19 25 28 10 1 39 6 46│35 0 45 11 40 48│41 16 29 42 7 21│ └─────────────────────────────┴────────────────┴────────────────┘ Linda R -----Original Message----- From: Programming [mailto:[email protected]] On Behalf Of Ric Sherlock Sent: Sunday, December 17, 2017 12:45 AM To: Programming JForum <[email protected]> Subject: Re: [Jprogramming] Splitting an Array into several arrays Hi Linda, They are equivalent for a right argument of i. y where y is an integer, but not for other lists that you might want to group. For example see Raul's recent post. But 14?50 doesn't work either. Cheers Ric On 16/12/2017 21:24, "Linda Alvord" <[email protected]> wrote: 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%7C84df9e7fe9f640afb435aaaaaaaa aaaa%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%7C84df9e7fe9f640afb435aaaaaaaa aaaa%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%7C84df9e7fe9f640afb435aaaaaaaa aaaa%7C1%7C0%7C636489983228215781&sdata=eJ%2BFJU3ytu8nNh8UGaBOmsOUl0FvgN1 %2Ba5Nr0qpCmrQ%3D&reserved=0 >> > ------------------------------------------------------------------- >> > --- For information about J forums see >> > https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Feur01.safelinks&data=02%7C01%7C%7C3251904317424b5258da08d5451164d8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636490863386139561&sdata=98dhoBohcksRWOLErcH6%2FF5aTRCvw5drfYhhQvFWkXI%3D&reserved=0. 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://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Feur01.safelinks&data=02%7C01%7C%7C3251904317424b5258da08d5451164d8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636490863386139561&sdata=98dhoBohcksRWOLErcH6%2FF5aTRCvw5drfYhhQvFWkXI%3D&reserved=0. 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://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Feur01.safelinks&data=02%7C01%7C%7C3251904317424b5258da08d5451164d8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636490863386139561&sdata=98dhoBohcksRWOLErcH6%2FF5aTRCvw5drfYhhQvFWkXI%3D&reserved=0. 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://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Feur01.safelinks&data=02%7C01%7C%7C3251904317424b5258da08d5451164d8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636490863386139561&sdata=98dhoBohcksRWOLErcH6%2FF5aTRCvw5drfYhhQvFWkXI%3D&reserved=0. 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://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Feur01.safelinks&data=02%7C01%7C%7C3251904317424b5258da08d5451164d8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636490863386139561&sdata=98dhoBohcksRWOLErcH6%2FF5aTRCvw5drfYhhQvFWkXI%3D&reserved=0. 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://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C3251904317424b5258da08d5451164d8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636490863386139561&sdata=SiDUltpYYv17avT5S7a7cw9lKwpLX59RnRgUN36M%2FdU%3D&reserved=0 ---------------------------------------------------------------------- For information about J forums see https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C3251904317424b5258da08d5451164d8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636490863386139561&sdata=SiDUltpYYv17avT5S7a7cw9lKwpLX59RnRgUN36M%2FdU%3D&reserved=0 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
