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