[Tutor] Finding a row match within a numpy array

bob gailer bgailer at alum.rpi.edu
Mon Aug 13 17:58:19 CEST 2007


Andy Cheesman wrote:
> Dear nice people
>
> I'm trying to match a row (b) within a large numpy array (a). My most
> successful attempt is below
>
> hit = equal(b, a)
> total_hits = add.reduce(hit, 1)
> max_hit = argmax(total_hits, 0)
> answer = a[max_hit]
>
> where ...
> a = array([[ 0,  1,  2,  3],
>     	   [ 4,  5,  6,  7],
> 	   [ 8,  9, 10, 11],
> 	   [12, 13, 14, 15]])
>
> b = array([8,  9, 10, 11])
>
>
>
> I was wondering if people could suggest a possible more efficient route
> as there seems to be numerous steps.
As an APL programmer I appreciate your approach.
I'm not a numpy expert. I'm assuming one can apply *for* to an array to 
iterate thru the rows. Try this:

for ix, row in enumerate(a):
    if row == b:
        break
else:
    ix = 0 

Cheers,
nice person


More information about the Tutor mailing list