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 :

Récupérer des valeurs d'un objet sans passer par les boucles


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Récupérer des valeurs d'un objet sans passer par les boucles
    Bonjour,

    Je travaille sur de la simulation numérique (Abaqus).

    Il est possible à l'aide de Python d'accéder aux données de la simulation. L'objet en question est assez complexe. Je vous présente mon problème quelque peu simplifier ci-dessous

    Je souhaiterais récupérer des données dans une liste ens_valeur, ce qui peut ce faire avec le bout de code suivant :

    ens_valeur=[]

    for i in range(1, n) :
    ens_valeur.append(frames[i].data)

    Le problème est que n est très grand et donc que la durée de l'extraction n'est pas très rapide. Ce n'est pas data à incrémenter mais un de ses parents.

    Pouvez-vous m'indiquer comment faire ce type de manipulation sans passez par les boucles et idem pour de "l'écriture" d'objet sans une optique de vectorisation par la suite.

    Je vous en suis remerciant.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par soucou Voir le message
    Pouvez-vous m'indiquer comment faire ce type de manipulation sans passez par les boucles et idem pour de "l'écriture" d'objet sans une optique de vectorisation par la suite.
    Comment imaginez-vous pouvoir récupérer la suite d'objets frames[i].data pour i dans 0..N sans faire bouger le i?
    Essayez par compréhension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ens_valeur = [ frames[i].data for i in range(1, N) ]
    remplacez range par xrange si vous êtes en Python2.

    - W
    PS: Quelle est la valeur de N 'très grand' ?
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pourquoi ne pas alimenter ens_valeur au fur et à mesure ? (Si c'est possible)
    Sinon il est impossible de créer une liste ens_valeur sans parcourir (for/while) frames[i]. La solution 'compréhension' de wiztricks reste la plus rapide dans ce cas.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Éventuellement, la même compréhension mais sur les frames:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ens_valeur = [f.data for f in  frames]
    faudrait faire des timmings pour voir si ça change quelque chose. À priori non mais sait-on jamais.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Le PO râle déjà pour le temps pris par la construction d'une liste de refs.
    Si l'intention est d'écrire tout çà sur disque, çà risque de prendre un facteur 100 ou 1000. et la compréhension n'y changera pas grand chose.
    (mais doit-on comprendre "écrire" par "sur disque"?)

    Sans plus d'infos, difficile de savoir s'il y a des améliorations simples à proposer ou s'il faut revoir le design complet (ou les attentes du PO).

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/05/2014, 11h47
  2. Réponses: 2
    Dernier message: 12/01/2010, 18h43
  3. Réponses: 10
    Dernier message: 06/07/2009, 13h56
  4. Récupérer des valeurs d´un autre classeur sans l´ouvrir
    Par jguenot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2009, 15h43
  5. Réponses: 16
    Dernier message: 06/06/2007, 12h42

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