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

Calcul scientifique Python Discussion :

problème de max


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut problème de max
    bonjour,

    Alors voila depuis hier je me met à numpy j'aimerais obtenir la ligne pour laquelle le dernier élément est de celle -ci est maximal (comparé aux derniers éléments des autres lignes), dit comme ça c'est flou mais avec un bout de code se sera plus clair:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    a = numpy.array([
    	[ 100,  0,  0,  0,  0,  0,  0,  0,  1600,  0],
    	[ 0,  100,  2,  3,  4,  5,  6,  800,  8,  9],
    	[ 0,  2,  100,  6,  8, 10, 400, 14, 16, 18],
    	[ 0,  3,  6,  100, 12, 200, 18, 21, 24, 27],
    	[ 0,  4,  8, 12, 100, 20, 24, 28, 32, 36]
    ])
    # cherche le plus grand parmis [0, 9, 18, 27, 36] et retourne l'array pour lequel la valeur est la plus grande
    array([   0,    4,    8, 1000,   16,   20,   24,   28,   32,   36])
    Après plusieurs heures à regarder la doc, stackoverflow,et faire "mumuse" entre les max les reshapes et les [:,-1] je m'avoue vaincu 🙁

    edit : j'ai trouvé en résonnant de façon plus "pythonnique" a[numpy.argmax([i[-1] for i in a])], mais ça ne m'étonnerais pas qu'il y est un moyen déjà tout fait dans numpy.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Pas besoin de numpy.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >>> a = [
    ...     [ 100,  0,  0,  0,  0,  0,  0,  0,  1600,  0],
    ...     [ 0,  4,  8, 12, 100, 20, 24, 28, 32, 36],
    ...     [ 0,  2,  100,  6,  8, 10, 400, 14, 16, 18],
    ...     [ 0,  100,  2,  3,  4,  5,  6,  800,  8,  9],
    ...     [ 0,  3,  6,  100, 12, 200, 18, 21, 24, 27]
    ... ]
    >>> b = sorted(a, key=lambda x: x[-1])[-1]
    >>> b
    [0, 4, 8, 12, 100, 20, 24, 28, 32, 36]
    >>>
    tu remarqueras que j'ai mélangé tes listes.

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Si a est un array, on écrit surtout pas cela

    mais directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a[:,-1]  ### On prend sur toutes les lignes (:), l'élément de dernière colonne

    ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import numpy
     
    a = numpy.array([
    	[ 100,  0,  0,  0,  0,  0,  0,  0,  1600,  0],
    	[ 0,  100,  2,  3,  4,  5,  6,  800,  8,  9],
    	[ 0,  2,  100,  6,  8, 10, 400, 14, 16, 18],
    	[ 0,  3,  6,  100, 12, 200, 18, 21, 24, 27],
    	[ 0,  4,  8, 12, 100, 20, 24, 28, 32, 36]
    ])
     
     
    line_of_interest=numpy.argmax(a[:,-1])
     
    print(a[line_of_interest])

  4. #4
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    Merci à vous 2, je viens de me rendre compte que l'utilisation d'array n'est pas le plus adapté dans mon cas, j'imagine que c'est le piège dans quand on découvre numpy que de vouloir l'utiliser de partout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec MAX()
    Par Arkay dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/10/2007, 20h01
  2. Problème sélection MAX() et GROUP BY
    Par nicolep dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/06/2007, 11h47
  3. Problème de max (date)
    Par valauga dans le forum Deski
    Réponses: 2
    Dernier message: 04/04/2007, 08h29
  4. Problème avec Max.
    Par Tyler Durden dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/10/2006, 08h05
  5. Problème select MAX(annee) dans une requête
    Par grisounette dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 28/10/2004, 17h36

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