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) <[email protected]> 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 > [email protected] > http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
_______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
