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

  1. #1
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    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 sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    merci pour votre réponse si rapide
    j'essayerai ca et je vous tiens au courant

    merci

  4. #4
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    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 sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    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

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par nmokht97 Voir le message
    merci d'avance pour le temps que vous prenez pour me répondre
    C'est vous qui devez apprendre à programmer, pas moi.
    A quoi sert votre variable mean?
    Pourquoi fabriquer la liste des valeurs (x, y) - I_liste - si c'est pour utiliser somme et occurences?
    Pourquoi calculer la moyenne à chaque itération plutôt que de faire une boucle "après"?

    Citation Envoyé par nmokht97 Voir le message
    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.
    Il faut mettre les données "en forme" pour qu'elles soient utilisables par votre bibliothèque 3D.

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

  8. #8
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    oui justement j'essaie d'apprendre et de comprendre

    Pour la variable elle sert a rien j'ai oublier de l’enlever quand j'ai fait un copier coller.

    je la fabrique pour des vérifications après et la somme et des occurrences c'était pour la moyenne,

    et pour la 3eme question j'ai aps bien compris c'est que vous voulez dire mais ce que je veux faire maintnant avec ca, c'est de tracer un plot en 3D la moyenne I_mean en fonction de (x,y).

    désolé mais j'ai jamais fait du python et je suis obligé de m'en servir ici et merci beaucoup pour votre aide, j'essayerai de m’améliorer rapidement promis

    Nass

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