# L-3 MCS 275 Fri 18 Jan 2008 : saddle.py # finding the saddle in a numpy array from numpy import * def saddle(A): """ returns coordinates of saddles in A maximum in rows, minimum in columns """ S = [] for i in range(0,A.shape[0]): max = A[i,0]; maxcol = 0; for j in range(1,A.shape[1]): if(A[i,j] > max): max = A[i,j]; maxcol = j p = 'max %.1f in row %d, column %d' \ % (max,i,maxcol) is_saddle = True for k in range(0,A.shape[0]): if(k != i): if(A[k,maxcol] < max): p = p + ' smaller value in row %d' % k is_saddle = False; break if is_saddle: p = p + ' saddle at (%d,%d)' % (i,maxcol) S.append((i,maxcol)) print p return S f = lambda x,y: (x-5)**2-(y-5)**2 A = fromfunction(f,(10,10)) print 'looking for a saddle in ' print A s = saddle(A) print 'saddles : ', s