IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

extraire k valeur minimum d'une matrice


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Par défaut extraire k valeur minimum d'une matrice
    salut,
    étant que j'ai une matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     SUM_new=
    [[118 165  80 105]
     [137 143  88 119]
     [159 122  48 160]
     ...
     [113  98 216 113]
     [158 109 197 200]
     [101 126 190 158]]
    je veux extraire les K valeur minimum de cette matrice ? soit K= 4

    j'arrive juste à extraire une valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    min_val=SUM_new.min()
    min_index=SUM_new.argmin()//n
    print("la valeur minimale", min_val)
    print("indice array contenant la valeur min ",min_index)
    TPIN=ACL[min_index]
    est ce que je dois extraire la valeur minimum détecter à chaque fois , pour ré-calculer un autre minimum?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Ranger les valeurs par ordre croissant et n'en retenir que les K premières...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre très actif
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Ranger les valeurs par ordre croissant et n'en retenir que les K premières...

    - W
    en fait j'ai besoin des indice des minimum c'est pourquoi j'ai pas fait recours à sorted

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par FATENMRABET Voir le message
    étant donner que j'ai une matrice
    Ouais, bonjour à toi aussi. Décidemment tu n'apprends rien toi !!!

    Citation Envoyé par FATENMRABET Voir le message
    je veux extraire les K valeur minimum de cette matrice ? soit K= 4
    est ce que je dois extraire la valeur minimum détecter à chaque fois , pour ré-calculer un autre minimum?
    print(sorted(SUM_new)[:4])
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre très actif
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouais, bonjour à toi aussi. Décidemment tu n'apprends rien toi !!!


    print(sorted(SUM_new)[:4])
    en fait j'ai besoin des indice des minimum c'est pourquoi j'ai pas fait recours à sorted , de plus à chaque execution la valeur de SUM_new change ( matrice dynamique )
    " i learn in the hard way" , (j'apprend rien !!)

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par FATENMRABET Voir le message
    en fait j'ai besoin des indice des minimum
    Ton titre parle des valeurs. Effectivement si tu confonds "valeur" et "indice", ne t'étonne pas de ne pas avoir de réponse appropriée de ceux qui, eux, ne confondent pas ces deux notions...

    Citation Envoyé par FATENMRABET Voir le message
    c'est pourquoi j'ai pas fait recours à sorted
    Tu fais bien de ne pas avoir recours à ce qui pourrait t'aider au lieu de réfléchir à comment justement t'en servir => print tuple(SUM_new.index(x) for x in sorted(SUM_new)[:4])
    Citation Envoyé par FATENMRABET Voir le message
    de plus à chaque execution la valeur de SUM_new change ( matrice dynamique )
    Effectivement, là ça change tout...

    Citation Envoyé par FATENMRABET Voir le message
    (j'apprend rien !!)
    Ben en tout cas t'as toujours pas appris à dire "bonjour"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    On peut, d'abord, mettre les valeurs "en ligne", en conservant chaque valeur avec son adresse (i=ligne, j=colonne):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SUM_new = [
    [118, 165,  80, 105],
    [137, 143,  88, 119],
    [159, 122,  48, 160],
    [113,  98, 216, 113],
    [158, 109, 197, 200],
    [101, 126, 190, 158]]
     
    L = []
    for i in range(0, len(SUM_new)):
        for j in range(0, len(SUM_new[0])):
            L.append([SUM_new[i][j], i, j])
    Ce qui donne pour L:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[118, 0, 0], [165, 0, 1], [80, 0, 2], [105, 0, 3], [137, 1, 0], [143, 1, 1], [88, 1, 2], [119, 1, 3], [159, 2, 0], [122, 2, 1], [48, 2, 2], [160, 2, 3], [113, 3, 0], [98, 3, 1], [216, 3, 2], [113, 3, 3], [158, 4, 0], [109, 4, 1], [197, 4, 2], [200, 4, 3], [101, 5, 0], [126, 5, 1], [190, 5, 2], [158, 5, 3]]
    On pourrait faire la même chose en une seule ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L = [[SUM_new[i][j], i, j] for i in range(0, len(SUM_new)) for j in range(0, len(SUM_new[0])) ]
    Il faut ensuite trier les sous-listes par rapport aux valeurs, c'est à dire le 1er élément de chaque sous-liste. Et on limite la liste obtenue aux 4 premières valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L2 = sorted(L, key=lambda v: v[0])[:4]
    Ce qui donne pour L2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[48, 2, 2], [80, 0, 2], [88, 1, 2], [98, 3, 1]]

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Ce qui donne pour L2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[48, 2, 2], [80, 0, 2], [88, 1, 2], [98, 3, 1]]
    Joli
    Tu donnes en même temps la valeur et sa position dans la grille

    Je ne pense pas que ce soit ce qui est voulu par le PO (il me semble qu'il veut les indices des tuples triés et non des valeurs triées) mais c'est un bel exercice de style
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Extraire les vecteurs à partir d'une matrice
    Par samia_6 dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/10/2007, 23h06
  2. Mettre une valeur infini dans une matrice
    Par malikakika dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/09/2007, 14h48
  3. Trouver la valeur maximale dans une matrice
    Par VanessaDu67 dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/06/2007, 10h23
  4. [MySQL] extraire la valeur max d'une variable
    Par MisterMacPhisto dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/06/2007, 17h14
  5. valeurs propres d'une matrice et vecteurs propres
    Par la_fantomas dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/05/2005, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo