[Numpy-discussion] sort bug

Travis Oliphant oliphant.travis at ieee.org
Thu Apr 26 15:08:15 EDT 2007


Anton Sherwood wrote:
> Travis Oliphant wrote:
>   
>> cmp(x,y) must return -1, 0, or 1 which doesn't work on arrays with more
>> than 1 element because it is ambiguous.  Thus you get this error.
>>     
>
> Ah.  Since lists *can* be compared, I assumed arrays would inherit
> that property.
>
>   
>> The operation is undefined.  What do you actually want to do when you
>> have equal-valued eigenvalues?
>>     
>
> Don't care.
>   

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)

Will do what you want.


-Travis




More information about the NumPy-Discussion mailing list