Hi Kenneth,

I did this.  The last line has what you're looking for in one line, but the 
stuff leading up to it shows my thought process:  

pdl> $P = rint(random(3,10)*5)

pdl> p $P

[
 [4 1 4]
 [5 4 2]
 [1 2 2]
 [0 3 0]
 [1 1 2]
 [2 1 2]
 [4 0 1]
 [4 1 4]
 [0 1 4]
 [4 2 3]
]

pdl> $test = pdl(4,1,4) #turns out that [4 1 4] turns up twice, so I'll just 
pick that for now

pdl> p $P==$test

[
 [1 1 1]
 [0 0 0]
 [0 0 0]
 [0 0 0]
 [0 1 0]
 [0 1 0]
 [1 0 0]
 [1 1 1]
 [0 1 1]
 [1 0 0]
]

pdl> p sumover($P==$test)
[3 0 0 0 1 1 1 3 2 1]
pdl> p sumover($P==$test)==$P->dim(0)
[1 0 0 0 0 0 0 1 0 0]
pdl> p $findresult = which(sumover($P==$test)==$P->dim(0))
[0 7]

Is that what you're looking for?

Actually, a little cleaner way is to do

pdl> p $findresult = which(andover($P==$test))
[0 7]

cheers,
Derek

On Nov 13, 2014, at 6:20 PM, LYONS, KENNETH B (KENNETH) <k...@research.att.com> 
wrote:

> I need to be able to match a vector inside a PDL, and can’t find a way to do 
> it.  The existence of qsortvec and uniqvec  functions implies that such a 
> comparison function exists (since you’d need to do that to sort) but the 
> documentation doesn’t give any info on it.  More specifically, if I have an 
> nxm PDL $P, containing vectors of length n in the first dimension, and an nx1 
> PDL representing a test vector, $test, I want to be able to get the indices 
> along the 2nd dimension where the vector in the PDL matches the test one. 
>  
> I would expect that such a function, which I’ll provisionally name findveci, 
> would operate as
>                 $findresult = $P->findveci($test)
> Where $findresult would be a 1-dimensional PDL giving the set of indices 
> along the second dimension of $P that match the vector $test. 
>  
> I should note that a similar purpose would be served by a function uniqveci 
> (which, although an obvious extension of the set that are available, also 
> seems not to exist), since you could combine that with qsortvec to do what 
> I’m talking about.  At present, I’ve resorted to pulling the vectors into 
> perl lists and doing the matching there.  But that’s far slower, and it seems 
> wrong to have to do it that way.
>  
> Any suggestions?
> _______________________________________________
> Perldl mailing list
> Perldl@jach.hawaii.edu
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

_______________________________________________
Perldl mailing list
Perldl@jach.hawaii.edu
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to