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 :

énumérer des vecteurs


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 63
    Par défaut énumérer des vecteurs
    Bonjour à tous,

    je vous expliques le problème en quelques ligne : j'ai une suite de vecteur et je souhaite conserver en mémoire leur .argsort() (ie la permutation permettant de les ordonner), pour ensuite tracer la courbe de l'évolution de ces permutations.

    Pour le moment j'ai codé une petite fonction donnant à chaque permutation un entier. Le problème c'est que comme le nombre de permutations est très grand cela donne une courbe assez peu lisible. Or en pratique seul un petit nombre de permutations apparaissent, mon objectif est donc d'écrire une fonction telle que, si n est le nombre de permutation "en mémoire", et v la nouvelle permutation on est
    f(v) = n si v n'est pas en mémoire, sa valeur sinon.

    Un exemple car j'ai l'impression de ne pas être clair :
    f([1 2 3]) = 0 (premier appel, rien en mémoire)
    f([1 3 2]) = 1 (v n'est pas en mémoire, -> un nouveau identifiant)
    f([1 2 3]) = 0 (v est déjà en mémoire, on donne sa valeur)
    f([2 1 3]) = 2 (v n'est pas en mémoire, nouvel identifiant)
    ...

    J'ai commencé d'imaginer de coder ça avec un dictionnaire des permutations en mémoire (test pour savoir si c'est dedans, sinon ajout au dictionnaire), mais ça me semble un peu compliqué, et je ne sais même pas comment le coder...

    Merci pour le coup de main :-)

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 63
    Par défaut
    Bon finalement j'ai trouvé une solution a défaut d'autres chose :
    j'ai mon vecteur v
    je créé un tuple(v.argsort())
    je test si le tuple est dans mon dictionnaire, sinon je l'y ajoute
    et je renvoie la valeur donnée par le dictionnaire.

    Au cas où quelqu'un qui a lem ême questionnement tomberait par hasard sur ce fil... S'il existe une solution plus élégante : j'écoute !

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le tuple est la bonne solution, tu peux stocker directement dans un set() si tu n'as pas à d'association à réaliser.

Discussions similaires

  1. Attribuer une signature +1/-1 à des vecteurs
    Par ecinaj dans le forum Fortran
    Réponses: 1
    Dernier message: 13/12/2006, 09h08
  2. Tracer des vecteurs de couleur
    Par mj555 dans le forum MATLAB
    Réponses: 1
    Dernier message: 01/11/2006, 23h56
  3. [Débutant]Impossible d'énumérer un vecteur
    Par bzhhydde dans le forum Langage
    Réponses: 2
    Dernier message: 24/08/2006, 13h30
  4. Utilisation des vecteurs
    Par EmilieG dans le forum MFC
    Réponses: 12
    Dernier message: 19/03/2004, 16h28
  5. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 10h40

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