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 :

Apprivoiser Numpy à la place de boucle for


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2020
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Apprivoiser Numpy à la place de boucle for
    Bonjour à tous,

    je suis assez novice en Python, et j'utilise souvent des boucle for pour réaliser des opérations sur des listes aux quantités de données importantes. La conséquence directe et un temp de calcul conséquent. J'ai cru comprendre qu'il était possible d'avoir une alternative aux boucles for en utilisant numpy, et que les performance étaient bien meilleures. Pourriez vous m'aguillez là dessus ? voici un cas d'application simplifié pour m'aider à comprendre le principe :

    ___________________________

    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
    import numpy as np
     
    # Inputs
    work_path = r'path'
    file = 'file.csv' # ce fichier est un fichier csv avec une unique colonne 1 = plusieurs "noms" type 'nom1 nom2 nom3 ...'
     
    # Liste cible, je veux obtenir un tableau avec colonne 1 = index / colonne 2 = noms / colonne 3 = quantité de nom1 dans "nom" / colonne 4 quantité de nom2 dans "nom" ...
    result = []
     
    with open(work_path + '\\' + file, 'r') as f:
        data = f.readlines()
        for noms in data:
            result.append([data.index(noms), noms
                              ,float(noms.count('nom1')),float(noms.count('nom2'))])
    np.savetxt(work_path + '\\' + 'result.csv', result, delimiter=';', fmt='% s',
                header='index;noms;nom1;nom2')
    Le but étant de partir d'un fichier csv avec une unique colonne comprenant des données textuelles, et d'aboutir avec un nouveau fichier comprenant une colonne par composante des données textuelles en indiquant leur quantité. ==> c'est un exemple simplifié pour m'aider à comprendre l'utilisation de Numpy en substitution d'une boucle for

    Merci !

  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,

    Vu que vos données ne sont pas homogènes (des nombres et du texte), pandas sera plus approprié que numpy.
    Lire un CSV avec pandas se fait avec pandas.read_csv.

    Pour le reste, numpy et pandas sont des bibliothèques assez fournies/touffues, si vous ne prenez pas le temps d'ouvrir un tuto pour apprendre les bases, vous n'aurez jamais idée de ce qu'on peut faire avec et imaginer comment les utiliser pour remplacer itérations par les opérations internes qu'ils offrent.

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

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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