[Numpy-discussion] sort bug

Charles R Harris charlesr.harris at gmail.com
Sun Apr 29 01:11:29 EDT 2007


On 4/28/07, Anton Sherwood <bronto at pobox.com> wrote:
>
> Travis Oliphant wrote:
> > One approach is to use argsort to create an index list of sorted
> > eigenvalues and then sort the eig and eigvector arrays before zipping
> > them together in a list of tuples.
> >
> > eig, val = numpy.linalg.eig(a)
> >
> > indx = eig.argsort()
> > eig = eig.take(indx)
> > val = val.take(indx, axis=1)
> > master = zip(eig, val.T)
>
> Thank you, that worked.
> http://www.ogre.nu/wp/?p=1978
>
> I refined it slightly:
>
> val,vec = numpy.linalg.eig(adj)
> indx = val.argsort()[-4:-1]
> val = val.take(indx)
> vec = vec.take(indx, axis=1)
> master = zip(val, vec.T)


But that won't get the 4  largest, and will ignore the last eigenvalue,
whatever it is. If you want the four largest, do

val,vec =  numpy.linalg.eig(adj)
ind = val.argsort()
val = val.take(ind[-4:])
vec = vec.take(ind[-4:], axis=1)
master = zip(val, vec.T)

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070428/94b2f3bb/attachment.html>


More information about the NumPy-Discussion mailing list