使用numpy.argsort。它返回一个索引,该索引将用于对数组进行排序。
import numpy as np
import numpy.linalg as linalg
A = np.random.random((3,3))
eigenValues, eigenVectors = linalg.eig(A)
idx = eigenValues.argsort()[::-1]
eigenValues = eigenValues[idx]
eigenVectors = eigenVectors[:,idx]
如果特征值是复数,则排序顺序是按字典顺序排列(也就是说,复数首先根据其实部进行排序,而其虚部则打破了联系)。