Re: dimensions in a multidimensional array
Hello Liz, I was indeed talking about the unshaped situation. BTW. I am growing more and more fond of raku, Thanks, Theo Elizabeth Mattijsen schreef op 2021-02-05 16:06: On 5 Feb 2021, at 15:49, Theo van den Heuvel wrote: I cannot seem to find an idiomatic way to get the dimensions of a multidimensional array, other than by looking at the size of the first row and column, with @m[0;*].elems and @m[*;0].elems. Am I missing something in the docs? If it's a shaped multidimensional array, you can call the .shape method my @a[3;3;3]; dd @a.shape; # (3,3,3) If it is not, then your workaround appears the way to do it. -- Theo van den Heuvel
Re: dimensions in a multidimensional array
I think he meant doing something like this (with fuller handling for out of bounds, exceptions throwing, slices, etc): role Shaped[*@dimensions] { has @!multipliers = @dimensions.reverse.produce(&[*])[0..*-2].reverse.Slip, 1; method AT-POS(*@indices where all @dimensions Z> @indices ) { self.List::AT-POS( [+] @indices Z* @!multipliers ) } } In this way, you could read in serial data with a bit less work by shaping it after the fact, e.g. my @foo = $fh.slurp.split($delimiter); @foo does Shaped[ … ]; > On Feb 5, 2021, at 12:31 PM, Timo Paulssen wrote: > > Shaped Arrays and Native Shaped Arrays already use one contiguous blob to > store all their data; in Shaped Arrays that's an array of pointers to the > stored objects, in a Native Shaped Array it'll be like a big array of 32bit > integers or whatever you have. > > Regards > - Timo > > On 05/02/2021 16:48, yary wrote: >> This got me interested in >> https://docs.raku.org/language/list#index-entry-Shaped_arrays >> >> and I find myself wanting to implement a role "Shaped" and applying it to >> List, for an immutable shaped list, whose implementation packs its elements >> for o(1) lookup... on my ever-lengthening to-do list >> >> -y >> >> >> On Fri, Feb 5, 2021 at 10:06 AM Elizabeth Mattijsen wrote: >> > On 5 Feb 2021, at 15:49, Theo van den Heuvel wrote: >> > I cannot seem to find an idiomatic way to get the dimensions of a >> > multidimensional array, >> > other than by looking at the size of the first row and column, with >> > @m[0;*].elems and @m[*;0].elems. >> > Am I missing something in the docs? >> >> If it's a shaped multidimensional array, you can call the .shape method >> >> my @a[3;3;3]; >> dd @a.shape; # (3,3,3) >> >> If it is not, then your workaround appears the way to do it.
Re: dimensions in a multidimensional array
When will we have p6’s Numpy? On Sat, Feb 6, 2021, at 2:04 AM, Brad Gilbert wrote: > There is a reason that you can't just ask for the dimensions of an > unspecified multidimensional array. > It may be multiple dimensions. > > [[1,2,3], > [4,5,6,7,8,9,10]].shape > > If it gave a result it would be something like: > > (2,3|7) > > On Fri, Feb 5, 2021 at 8:50 AM Theo van den Heuvel > wrote: >> Hi gurus, >> >> I cannot seem to find an idiomatic way to get the dimensions of a >> multidimensional array, >> other than by looking at the size of the first row and column, with >> @m[0;*].elems and @m[*;0].elems. >> Am I missing something in the docs? >> >> Thanks, >> >> -- >> Theo van den Heuvel >>
Re: dimensions in a multidimensional array
There is a reason that you can't just ask for the dimensions of an unspecified multidimensional array. It may be multiple dimensions. [[1,2,3], [4,5,6,7,8,9,10]].shape If it gave a result it would be something like: (2,3|7) On Fri, Feb 5, 2021 at 8:50 AM Theo van den Heuvel wrote: > Hi gurus, > > I cannot seem to find an idiomatic way to get the dimensions of a > multidimensional array, > other than by looking at the size of the first row and column, with > @m[0;*].elems and @m[*;0].elems. > Am I missing something in the docs? > > Thanks, > > -- > Theo van den Heuvel > >
Re: dimensions in a multidimensional array
Shaped Arrays and Native Shaped Arrays already use one contiguous blob to store all their data; in Shaped Arrays that's an array of pointers to the stored objects, in a Native Shaped Array it'll be like a big array of 32bit integers or whatever you have. Regards - Timo On 05/02/2021 16:48, yary wrote: This got me interested in https://docs.raku.org/language/list#index-entry-Shaped_arrays <https://docs.raku.org/language/list#index-entry-Shaped_arrays> and I find myself wanting to implement a role "Shaped" and applying it to List, for an immutable shaped list, whose implementation packs its elements for o(1) lookup... on my ever-lengthening to-do list -y On Fri, Feb 5, 2021 at 10:06 AM Elizabeth Mattijsen <mailto:l...@dijkmat.nl>> wrote: > On 5 Feb 2021, at 15:49, Theo van den Heuvel mailto:vdheu...@heuvelhlt.nl>> wrote: > I cannot seem to find an idiomatic way to get the dimensions of a multidimensional array, > other than by looking at the size of the first row and column, with @m[0;*].elems and @m[*;0].elems. > Am I missing something in the docs? If it's a shaped multidimensional array, you can call the .shape method my @a[3;3;3]; dd @a.shape; # (3,3,3) If it is not, then your workaround appears the way to do it.
Re: dimensions in a multidimensional array
This got me interested in https://docs.raku.org/language/list#index-entry-Shaped_arrays and I find myself wanting to implement a role "Shaped" and applying it to List, for an immutable shaped list, whose implementation packs its elements for o(1) lookup... on my ever-lengthening to-do list -y On Fri, Feb 5, 2021 at 10:06 AM Elizabeth Mattijsen wrote: > > On 5 Feb 2021, at 15:49, Theo van den Heuvel > wrote: > > I cannot seem to find an idiomatic way to get the dimensions of a > multidimensional array, > > other than by looking at the size of the first row and column, with > @m[0;*].elems and @m[*;0].elems. > > Am I missing something in the docs? > > If it's a shaped multidimensional array, you can call the .shape method > > my @a[3;3;3]; > dd @a.shape; # (3,3,3) > > If it is not, then your workaround appears the way to do it.
Re: dimensions in a multidimensional array
> On 5 Feb 2021, at 15:49, Theo van den Heuvel wrote: > I cannot seem to find an idiomatic way to get the dimensions of a > multidimensional array, > other than by looking at the size of the first row and column, with > @m[0;*].elems and @m[*;0].elems. > Am I missing something in the docs? If it's a shaped multidimensional array, you can call the .shape method my @a[3;3;3]; dd @a.shape; # (3,3,3) If it is not, then your workaround appears the way to do it.
dimensions in a multidimensional array
Hi gurus, I cannot seem to find an idiomatic way to get the dimensions of a multidimensional array, other than by looking at the size of the first row and column, with @m[0;*].elems and @m[*;0].elems. Am I missing something in the docs? Thanks, -- Theo van den Heuvel