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 :

liste de listes et tri avec condition sur les éléments d'une ou plusieurs listes


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 10
    Par défaut liste de listes et tri avec condition sur les éléments d'une ou plusieurs listes
    Bonjour

    étant un débutant dans le la programmation je souhait faire un tri sur liste de 3 listes, voila mon problème:

    j'ai un fichier qui contient des données sur 3 colonnes et j'ai extrait les données dans une liste de trois listes, et ce que je cherche a faire c'est un programme qui me permet de trier les valeurs de la 3eme liste (colonne) correspondants pour chaque couple de valeurs des deux autres listes qui sont répétitifs.

    je vous donne un exemple :

    x=[10, 20, 30, 10, 20, 30 ]
    y=[5, 15, 25, 5, 15, 25 ]
    I=[12, 11, 10, 15, 12, 13]

    donc danc cet exemple comme vous le voyez pour le couple par exemple (x ,y)=(10, 5) y a deux valeurs différentes de I, donc je cherche a faire la moyenne de I pour chaque couple. biensur moi j'ai un fichier avec des milliers de données donc je peut pas le faire a la main
    je ne sais pas si je suis assez claire pour expliquer mon probléme je l'espère en tous les cas, et merci pour vos réponses .

    cordialement

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    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 754
    Par défaut
    Salut,

    3 colonnes, c'est des lignes de la forme x, y, i.
    Sous cette forme on a une liste de "lignes" xyi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> x=[10, 20, 30, 10, 20, 30 ]
    >>> y=[5, 15, 25, 5, 15, 25 ]
    >>> I=[12, 11, 10, 15, 12, 13]
    >>> xyi = list(zip(x, y, I))
    >>> xyi
    [(10, 5, 12), (20, 15, 11), (30, 25, 10), (10, 5, 15), (20, 15, 12), (30, 25, 13)]
    plus simple à parcourir.
    Après pour faire la moyenne, il faut calculer la somme et compter le nombre d’occurrences de chaque (x, y).
    On peut faire çà avec 2 dictionnaires spéciaux dits defaultdict:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> from collections import defaultdict
    >>> somme = defaultdict(int)
    >>> occurences = defaultdict(int)
    >>> for x, y, i in xyi:
    ...     somme[x, y] += i
    ...     occurences[x, y] += 1
    ...
    Et maintenant, vous pouvez faire la moyenne.

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

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 10
    Par défaut
    merci pour votre réponse si rapide
    j'essayerai ca et je vous tiens au courant

    merci

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 10
    Par défaut
    Rebonjour

    j'ai fait en ligne puis pour le calcules des occurrences j'ai pas bien compris le but en faite, si possible d'avoir une boucle qui pourra me regrouper toutes les valeurs de I correspondant a chaque couple (x, y), c'est plus simple pour moi aprés pour calculer la moyenne. car quand je fait print des occurances je vois qu'il y a qu'une pour chaque couple et c'est pas normal car moi dans mes données je m'attendait a avoir 7.

    merci

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    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 754
    Par défaut
    Citation Envoyé par nmokht97 Voir le message
    j'ai fait en ligne puis pour le calcules des occurrences j'ai pas bien compris le but en faite, si possible d'avoir une boucle qui pourra me regrouper toutes les valeurs de I correspondant a chaque couple (x, y), c'est plus simple pour moi aprés pour calculer la moyenne. car quand je fait print des occurances je vois qu'il y a qu'une pour chaque couple et c'est pas normal car moi dans mes données je m'attendait a avoir 7
    Et ben, vous fabriquez un dictionnaire qui à chaque (x, y) associe la liste des valeurs trouvées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> listes = defaultdict(list)
    >>> for x, y, i in xyi :
    ...     listes[x, y].append(i)
    ...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 10
    Par défaut
    Bonjour

    merci beaucoup ca m'a énormément aidé, voici donc le programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    occurences = defaultdict(int)
    somme = defaultdict(int)
    I_liste=defaultdict(list)
     
    I_mean=defaultdict(list)
    mean=[]
    for X, Y, I in XYI:
        somme[X,Y] += I
        occurences[X,Y] += 1
        I_liste[X,Y].append(I)
        I_mean[X,Y] = somme[X,Y]/occurences[X,Y]
    maintenant je dois tracer une courbe en 3D I_mean(X,Y) et la j'arrive pas a faire un plot simple puisque les données ne sont pas maintenant des listes (sauf si je me trompe), puis je dois calculer l'ecart type aussi et le tracer ensuite.

    merci d'avance pour le temps que vous prenez pour me répondre

Discussions similaires

  1. Update or insert avec conditions sur les champs
    Par calou_33 dans le forum SQL
    Réponses: 7
    Dernier message: 04/08/2010, 10h36
  2. Réponses: 1
    Dernier message: 22/12/2008, 10h15
  3. Réponses: 8
    Dernier message: 12/07/2008, 12h29
  4. [XPath] test d'existence de noeud avec conditions sur les enfants
    Par MasterOfChakhaL dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 11/04/2007, 10h42
  5. [XSLT]copie partielle avec condition sur les axes
    Par MasterOfChakhaL dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/10/2006, 19h15

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