Late to the discussion, but this will work too

pdl> use PDL::Stats

pdl> $a = pdl [qw[-1 0 0 0 0 0 0 0 0 -1 0 1 1 -2 10 -2 1 2 0 0 0 1 1 -1 0 1
0 0 0 0 0]]

pdl> p $a->uniq
[-2 -1 0 1 2 10]

# this produces the frequencies of the uniq'ed elements

pdl> p $d = $a->qsort->iv_cluster->sumover
[2 3 18 6 1 1]


Best,
Maggie


On Tue, Feb 11, 2014 at 12:57 AM, Craig DeForest
<[email protected]>wrote:

> To be fair, rle could and should generate a truncated output PDL for
> itself...
>
>
> On Feb 10, 2014, at 9:45 PM, Derek Lamb <[email protected]> wrote:
>
> > In your $idx below, you don't want the second occurrence of 0 in $b, you
> want the first occurrence of 0 in $a.  Because if your data for some reason
> has no 0 in it, then your method fails.  All those zeroes in $rv are to be
> expected--the $a and $b arrays have the same size as your input data, so
> you have to truncate.  Re-read the rle() docs.
> >
> > For finding how many numbers fall in a given range, hist() is your
> friend if the ranges are consecutive and evenly spaced.
> >
> > pdl> ??sort
> >
> > will give you a list of all the sorting routines.  It sounds like you
> want qsortvec().
> >
> >
> > On Feb 10, 2014, at 9:20 PM, mraptor wrote:
> >
> >> How do I sort multicolumns matrix by single columns...
> >> -------| http://ifni.co
> >>
> >>
> >> On Mon, Feb 10, 2014 at 10:24 PM, mraptor <[email protected]> wrote:
> >>> this worked out :
> >>> sub freq {
> >>>  my $data = shift;
> >>>  my ($a,$b) = rle qsort $data;
> >>>  #find the idx of the second zero
> >>>  my $idx = which($b == 0)->(1);#2nd elem
> >>>  my $rv = pdl $b(1:$idx-1), $a(1:$idx-1);
> >>>  return $rv
> >>> }
> >>> -------| http://ifni.co
> >>>
> >>>
> >>> On Mon, Feb 10, 2014 at 10:06 PM, mraptor <[email protected]> wrote:
> >>>> thanks..this seem to do it :
> >>>>
> >>>> ($a,$b) = rle qsort $data;
> >>>> $rv = pdl $a, $b;
> >>>>
> >>>> the only thing which is no big deal is that it seems to if I process
> >>>> 100 elements and I get let say 5 elem only after i remove the
> >>>> repetitions it still returns 100 elements instead 5..
> >>>>
> >>>> pdl> p $rv->transpose
> >>>>
> >>>> [
> >>>> [-5  1]
> >>>> [-3  3]
> >>>> [-2  7]
> >>>> [-1 17]
> >>>> [ 0 46]
> >>>> [ 1 17]
> >>>> [ 2  3]
> >>>> [ 3  1]
> >>>> [ 4  2]
> >>>> [ 5  1]
> >>>> [ 6  1]
> >>>> [10  1]
> >>>> [ 0  0]
> >>>> [ 0  0]
> >>>>
> >>>> ...... alot of zeros after this ... :)
> >>>>
> >>>> -------| http://ifni.co
> >>>>
> >>>>
> >>>> On Mon, Feb 10, 2014 at 9:34 PM, Craig DeForest
> >>>> <[email protected]> wrote:
> >>>>> Check out rle() -- it is in the standard PDL releases!
> >>>>>
> >>>>> (Mobile)
> >>>>>
> >>>>>
> >>>>>> On Feb 10, 2014, at 7:09 PM, mraptor <[email protected]> wrote:
> >>>>>>
> >>>>>> Do you guys, know a way to count repeated numbers. f.e. let say I
> have
> >>>>>> this pdl :
> >>>>>>
> >>>>>> [-1 0 0 0 0 0 0 0 0 -1 0 1 1 -2 10 -2 1 2 0 0 0 1 1 -1 0 1 0 0 0 0 0
> >>>>>> -2 0 0 -1 0 1 -1 -1 -2 -1 -1 0 0 1 -1 -1 0 0 0 1 0 0 1 -1 -1 1 1 -3
> -1
> >>>>>> 0 2 0 6 3 4 5 0 -1 0 -1 -3 -2 0 1 0 1 0 0 4 -3 -5 -2 2 -1 0 1 0 -2
> 1 1
> >>>>>> 0 0 0 0 0 0 0 0 -1]
> >>>>>>
> >>>>>> how would I create a pdl than contains the number and how many times
> >>>>>> the number occurred ?
> >>>>>> What about if I wanted to count numbers in a range...let say the pdl
> >>>>>> had numbers between 1 and 100 and I wanted to count the numbers
> >>>>>> between 1-10, 11-20, 21-30,...
> >>>>>>
> >>>>>> thanks
> >>>>>>
> >>>>>>
> >>>>>> -------| http://ifni.co
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> Perldl mailing list
> >>>>>> [email protected]
> >>>>>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
> >>>>>>
> >>
> >> _______________________________________________
> >> Perldl mailing list
> >> [email protected]
> >> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
> >>
> >
> >
> > _______________________________________________
> > Perldl mailing list
> > [email protected]
> > http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
> >
>
>
> _______________________________________________
> Perldl mailing list
> [email protected]
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to