0
votes

Commander plusieurs listes à la fois avec une référence de base

J'utilise sklearn pour calculer des valeurs propres et des eigenvectors, une partie de mon problème est que je souhaite commander les eigenvalues, calculer une somme cumulée sur eux et comparer ce nombre à un seuil de variance. Dès que je sais, par exemple, les 3 premiers validus sont suffisants et me procureront le seuil, je devrai trouver les vecteurs propres correspondants.

J'aime ce xxx

appliquer la réchrographie de base_list à second_list Je voudrais obtenir ce < / p> xxx

En d'autres termes, je veux avoir ma liste de listes d'Eigenvector ordonnée de la même manière que mes valeurs propres.

Toutes les suggestions sont appréciées


1 commentaires

Je ne comprends pas comment vous êtes arrivé à la sortie second_list , pouvez-vous s'il vous plaît clarifier


3 Réponses :


1
votes
indices = sorted(range(len(base_list)), key=base_list.__getitem__, reverse=True)

0 commentaires

1
votes

opérant sous l'hypothèse selon laquelle votre liste de base et votre deuxième liste seraient toujours la même longueur, voici comment je le ferais (sans utiliser une autre bibliothèque comme numpy).

Si vous tournez la deuxième liste dans une liste des tuples Lorsque le premier élément du tuple est l'élément correspondant de la liste de base, vous pouvez trier la deuxième liste de la manière dont vous voulez. xxx

Vous pouvez désormais trier la deuxième liste de de la même manière que la liste de base: xxx

Vous pouvez alors extraire les valeurs des tuples.


0 commentaires

1
votes

Vous pouvez mapper vos valeurs propres non traitées des valeurs de la liste de base. Puis triez votre liste de base, puis créez une liste des eigenvalues ​​triées à l'aide de la liste triée en tant que index:

base_list = [2, 3,1,4]
second_list =[[3,3],[1,1],[4,4],[2,2]]
eigen_map = {i: eigenvalue for i, eigenvalue in zip(base_list, second_list)}
sorted_list = sorted(base_list)
sorted_eigenvalues = [eigen_map[index] for index in sorted_list]


0 commentaires