# [Numpy-discussion] confusion in eigenlib code

gordon nodrogbrown@gmail....
Tue Apr 1 10:09:13 CDT 2008

```hi
i came across some code for eigenface construction from some
images ,using the old Numeric .
http://www.owlnet.rice.edu/~elec301/Projects99/faces/code.html
In the eigenlib.py
http://www.owlnet.rice.edu/~elec301/Projects99/faces/code/eigenlib.py
i  converted the calls to Numeric functions to their numpy equivalents
(to linalg.eigh() and numpy.dot())and ran the code.In this eigenlib.py
i am confused by some parts where they derrive eigenvectors and sort
them

evalues, evectors = LinearAlgebra.eigenvectors(L)
# sort them by eigenvalue and keep the top M_prime
evs = map(None, evalues, evectors)
evs.sort()
evs.reverse()
evs = evs[0:M_prime]

# write those into the directory
v = map(lambda x: x[1], evs)
self.u = []
for k in range(M_prime):
print(' ' + str(k+1))
self.u.append(Numeric.matrixmultiply(v[k], self.Phi))
#self.vector_to_image(self.u[-1], '%s/eig%03d.gif' % (dir, k))

(Here self.Psi is the average face from a collection of face images
and  self.Phi is obtained by substracting Psi from original image
data ...mean centering i guess)

what i can't understand in the above code is that when evs[0:M_prime]
is taken it takes the rows from evectors.Is not the correct way to
take a column of evectors as an eigenvector? If someone can make this