Here is another alternative using cut:
First build the left arg for cut:
lhs=: ('' ; 0&,@[ e.~ i.@{:@$@])"0 _
3 4 lhs arr
┌┬───────────┐
││1 0 0 1 0 0│
├┼───────────┤
││1 0 0 0 1 0│
└┴───────────┘
3 4 ([: {."1 lhs <;.1"1 _ ]) arr
┌─────┬───────┐
│0 1 2│0 1 2 3│
│6 7 8│6 7 8 9│
│2 3 4│2 3 4 5│
│8 9 0│8 9 0 1│
│4 5 6│4 5 6 7│
│0 1 2│0 1 2 3│
│6 7 8│6 7 8 9│
│2 3 4│2 3 4 5│
│8 9 0│8 9 0 1│
│4 5 6│4 5 6 7│
└─────┴───────┘
On Sat, Sep 27, 2014 at 1:33 PM, Tikkanz <[email protected]> wrote:
> This becomes easier if you want to extract rows (rather than columns) so
> one option is to make the columns rows:
> 3 4 ([: |:&.> [ <@{."0 _ |:@]) arr
>
> ┌─────┬───────┐
>
> │0 1 2│0 1 2 3│
>
> │6 7 8│6 7 8 9│
>
> │2 3 4│2 3 4 5│
>
> │8 9 0│8 9 0 1│
>
> │4 5 6│4 5 6 7│
>
> │0 1 2│0 1 2 3│
>
> │6 7 8│6 7 8 9│
>
> │2 3 4│2 3 4 5│
>
> │8 9 0│8 9 0 1│
>
> │4 5 6│4 5 6 7│
>
> └─────┴───────┘
>
>
> Depending on your application it may be worthwhile thinking of changing
> the format of your array so this isn't necessary.
>
>
> On Sat, Sep 27, 2014 at 5:22 AM, Jon Hough <[email protected]> wrote:
>
>> Hi Bob,
>> What I want is to get certain columns of the array. I know I can use {."1
>> to do this. But then I might want to get the first three columns and also
>> the first 4 columns as the output.I understand that to have my verb return
>> the first 3 columns and also the first 4 columns, I need to use boxing. But
>> my problem seems to be in the actual loop {"1, which is the part I am
>> confused about.I can't do 3 4{"(0 1) arr because the output shapes are
>> different, but I am sure there is a way to do things like this.
>>
>> Your suggestion:
>> (3&{."1 ; 4&{.) arr
>> gives what I was after. However if I wanted to get an arbitrary number of
>> columns, the above becomes unwieldy unless I try something like:
>> columns =: 3 4 5 4 5 NB. extract the first 3,4,5,4,5 columns respectively
>> ;/columns{."(0 1) arr
>> I get a length error trying my above code. Hmm...
>>
>> > From: [email protected]
>> > Date: Fri, 26 Sep 2014 10:03:52 -0700
>> > To: [email protected]
>> > Subject: Re: [Jprogramming] Length errors when getting multiple columns
>> from array
>> >
>> > Hi Jon,
>> >
>> > I am a bit confused about what you would like as well, but without
>> boxing you could do this
>> >
>> > (3&{. , 4&{.)"1 arr
>> > 0 1 2 0 1 2 3
>> > 6 7 8 6 7 8 9
>> > 2 3 4 2 3 4 5
>> > 8 9 0 8 9 0 1
>> > 4 5 6 4 5 6 7
>> > 0 1 2 0 1 2 3
>> > 6 7 8 6 7 8 9
>> > 2 3 4 2 3 4 5
>> > 8 9 0 8 9 0 1
>> > 4 5 6 4 5 6 7
>> >
>> > but I am suspicious of the term 4 elements, so that what you may really
>> want is this
>> >
>> > (3&{."1 ; 4&{.) arr
>> > ┌─────┬───────────┐
>> > │0 1 2│0 1 2 3 4 5│
>> > │6 7 8│6 7 8 9 0 1│
>> > │2 3 4│2 3 4 5 6 7│
>> > │8 9 0│8 9 0 1 2 3│
>> > │4 5 6│ │
>> > │0 1 2│ │
>> > │6 7 8│ │
>> > │2 3 4│ │
>> > │8 9 0│ │
>> > │4 5 6│ │
>> > └─────┴───────────┘
>> >
>> > Cheers, bob
>> >
>> > On Sep 26, 2014, at 9:51 AM, Devon McCormick <[email protected]>
>> wrote:
>> >
>> > > Not entirely sure what you want, but is this it?
>> > >
>> > > 3 4{."1&.><arr
>> > > +-----+-------+
>> > > |0 1 2|0 1 2 3|
>> > > |6 7 8|6 7 8 9|
>> > > |2 3 4|2 3 4 5|
>> > > |8 9 0|8 9 0 1|
>> > > |4 5 6|4 5 6 7|
>> > > |0 1 2|0 1 2 3|
>> > > |6 7 8|6 7 8 9|
>> > > |2 3 4|2 3 4 5|
>> > > |8 9 0|8 9 0 1|
>> > > |4 5 6|4 5 6 7|
>> > > +-----+-------+
>> > >
>> > >
>> > > On Fri, Sep 26, 2014 at 12:44 PM, Jon Hough <[email protected]>
>> wrote:
>> > >
>> > >> I have a 2-d array. e.g.
>> > >> arr =: 10 6 $ i. 10
>> > >> I want to get the first 3 columns from the array, e.g. 3{."1and get
>> the
>> > >> first 4 elements, e.g. 4{."1
>> > >> However, combining these, as in
>> > >> 3 4 {."(0 1) arrgives a length error. Of course 3{. and 4{. will
>> give
>> > >> different shape results so should be boxed and then concatenated
>> > >> perhaps(?). I am not sure how to do this, but the end result I want
>> would
>> > >> be something like:
>> > >>
>> > >> ┌─────┐
>> > >>
>> > >> │0 1 2│
>> > >>
>> > >> │6 7 8│
>> > >>
>> > >> │2 3 4│
>> > >>
>> > >> │8 9 0│
>> > >>
>> > >> │4 5 6│
>> > >>
>> > >> │0 1 2│
>> > >>
>> > >> │6 7 8│
>> > >>
>> > >> │2 3 4│
>> > >>
>> > >> │8 9 0│
>> > >>
>> > >> │4 5 6│
>> > >>
>> > >> └─────┘
>> > >>
>> > >>
>> > >> concatenated with
>> > >>
>> > >>
>> > >> ┌───────┐│0 1 2 3││6 7 8 9││2 3 4 5││8 9 0 1││4 5 6 7││0 1 2 3││6 7
>> 8 9││2
>> > >> 3 4 5││8 9 0 1││4 5 6 7│
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >> └───────┘
>> > >>
>> > >>
>> > >>
>> > >>
>> ----------------------------------------------------------------------
>> > >> For information about J forums see
>> http://www.jsoftware.com/forums.htm
>> > >
>> > >
>> > >
>> > >
>> > > --
>> > > Devon McCormick, CFA
>> > > ----------------------------------------------------------------------
>> > > 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