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 :

extraction de donnée d'un tableau et traitement


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 8
    Points
    8
    Par défaut extraction de donnée d'un tableau et traitement
    Bonjour,

    j'aurais besoin de votre aide pour écrire mon programme (je débute en python). Je pense que c'est simple (du moins dans ma tete) et impossible de trouver la bonne écriture python.

    Voici mon probleme simplifié.

    J'ai un tableau à deux colonnes (une colonne labels et une colonne indices). J'ai reussi a extraire ces deux colonnes de la maniere suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    In [71]: print c.labels
    [-1, -1, 3, 2, 3, 1]
    In [87]: print c.indices
    [148, 90, 34, 23, 0, 234]
    Le truc c'est que chaque labels correspond a un numero dévenement, et l'indice la valeur de l'evenement.
    Autrement dit j'aimerais avoir dans une meme variable evenement quelques chose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    evenement(1)=234
    evenement(2)=23
    evenement(3)=34,0
    Si le labels est -1 on prend pas en compte l'evenement.

    Du coup je pensais faire une boucle sur ma liste labels et un test sur la valeur de labels. Mais je vais pas faire ca avec un if (j'ai plus de 200 evenements)

    Et quelque chose comme ca ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    evenement=[0]
        for j in len(c.labels):
    	if c.labels[j]==-1:
    		continue
    	else:
    		evenement[c.labels[j]].append(c.indices)
    Un peu d'aide serait la bienvenue !

    Merci

    PS: je suis débutante sur le forum, le message devrait etre plutot en calcul scientifique je pense...

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Quelque chose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    evenement = {}
    for idx, label in enumerate(c.labels):
        if label == -1:
    	continue
        else:
    	evenement[label] = c.indices[idx]

    J'ai supposé que evenement devait être un dictionnaire sinon ça n'a pas de sens.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Je vais essayé comme ca.
    En tatonnant j'ai obtenu quelques choses qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        # c.labels=[-1,-1,3,2,3,1]
        # c.indices=[148,90,34,23,0,234]
        evenement=[]
        nb_evnmt=len(set(c.labels))
        evenements=[evenement[:] for _ in list(range(nb_evnmt))]
        for j in range(len(c.labels)):
             if c.labels[j]==-1:
    	        continue
             else:
    		# print c.labels[j],c.indices[j]
    		evenements[c.labels[j]].append(c.indices[j])
    Quelle est l'utilite dans ce cas d'utiliser un dictionnaire ?

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Un dico t'aurait donné les labels comme clés et les indices comme valeurs.


    Je n'avais pas saisis ton idées de liste imbriquées.

    Alors tu peux simplifier comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #-*- coding: utf-8 -*-
     
    labels = [-1, -1, 3, 2, 3, 1]
    indices = [148, 90, 34, 23, 0, 234]
     
    evenements = [[] for _ in range(len(set(labels)))]
    for idx, label in enumerate(labels):
        if label == -1:
            continue
        else:
            evenements[label- 1].append(indices[idx])
     
    print evenements
     
    >>>  [[234], [23], [34, 0], []]
    Mais ça implique que les labels se suivent sans interruption de valeur.
    ex. indices = (-1, 2, 4, 1, 6, 3) provoquera une erreur par l'absence de l'indice 5

  5. #5
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Je reviens sur mon dico qui aura l'avantage d'éviter l'erreur décrite précédement et les inévitables listes vides dues aux indices qui ont un même label

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    evenements = {}
    while labels:
        label, indice = labels.pop(0), indices.pop(0)
        if label != -1:
            if label in evenements:
                evenements[label].append(indice)
            else:
                evenements[label] = [indice]
     
    print evenements
     
    >>> {1: [234], 2: [23], 3: [34, 0]}
    C'est un hasard que les clés soient dans l'ordre.

Discussions similaires

  1. [XL-2003] Créer des tableaux par extraction de données sur un tableau principal
    Par mandrake57 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/09/2011, 14h17
  2. Réponses: 1
    Dernier message: 10/05/2011, 20h34
  3. Extraction de données d'un tableau
    Par wiewie dans le forum LabVIEW
    Réponses: 1
    Dernier message: 12/06/2008, 18h43
  4. [MySQL] Problème d'extraction de données d'un tableau
    Par cyberdevelopment dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/04/2007, 13h11
  5. extraction de donnée vers un tableau
    Par childof dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 29/03/2007, 14h46

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