Is there a function to sort eigenvectors in by decreasing eigenvalues

Having computed eigenvectors and eigenvalues of a matrix with pytorch,
w, lamb = torch.eig(matrix,eigenvectors=True)

Is there a function to sort the eigenvectors in the decreasing order of the eigenvalues?

You can use .sort() on the eigenvalues and use the indices to get the same sorting in the eigenvectors.

@albanD, is the following right? Especially the dim?

sortedEig, indices=torch.sort(w, dim=0, descending=True, out=None)
lambSort = lamb.gather(dim=1, index=indices)

You don’t need to specify out=None.

This looks good according to the doc yes.

Thanks for your help, lambSort is a N x 2 tensor instead of N x N tensor which lamb actually is. How do I fix this?

Ho sorry I misread, I think you want index_select() instead of gather here.

OK! Since the first element/column of the eigenvalue tensor is the real part and the second element is the imaginary part, is it safe to use/take just the first element(real part) for sorting? Or do I need to combine them? If yes, is there a way to combine them?

If yes, is there a way to combine them?

That depends on your application ! Do you want to only consider the real part? Or the norm of the complex number?

I am actually implementing PCA so I guess I dabble ignore the complex elements.