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 :

Affichage des données dans un tableau à deux dimensions


Sujet :

Python

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut Affichage des données dans un tableau à deux dimensions
    Bonjour

    Je souhaite afficher des données de type flottante et des entier dans un tableau.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    import numpy as np
     
    L = 183
    Ct = 3.0 * (10**(-4))
    OM = 0.05
    k2 =np.array([7, 6, 5, 4, 3, 2])
    x = np.array([12, 12.6, 14.2, 16.2, 19.8, 32.1])-10
     
    theta = [x /2*L]
     
    r1 = 3 * np.ones(6)
    r2 = k2 + 3
    r = r2 - r1
    F = (x*Ct)/(OM*2*L)
    f = 0
     
     
    print("F", F)
     
    tableau = [k2, r2, x, theta, r1, r, f, F]
     
    for i in range(len(tableau)):
        for j in range((tableau[i])):
            print(tableau[i][j])
    voici l'erreur

    for j in range((tableau[i])):
    TypeError: only integer scalar arrays can be converted to a scalar index.

    Si j'ai bien traduit, le problème est que les tableaux n'affichent que les données de type entiers.

    Comment faire pour afficher un tableau avec nombre avec des virgules ?

    A bientôt

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    Par défaut
    Je pense plutôt que ça veut dire qu'il faut un entier comme argument à range. Manquerait pas un len?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for j in range(len(tableau[i])):

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour

    Petit exemple pour afficher les valeurs int et float d'un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tableau = [[1, 2.32, 3], [7.65, 5, 11], [8, 9.2, 5.5]]
     
    for i in range(len(tableau)):
        print()
        for j in range(len(tableau[i])):
            if isinstance(tableau[i][j], int):
                print("{:7d}   ".format(tableau[i][j]), end="   ")
            else:
                print("{:10.2f}".format(tableau[i][j]), end="   ")
    Ce qui affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          1            2.32         3      
          7.65         5           11      
          8            9.20         5.50
    Doc pour print: https://docs.python.org/fr/3/library...ht=print#print

    Doc pour format: https://docs.python.org/fr/3/library...=format#format
    et mini-langage pour format: https://docs.python.org/fr/3/library...tml#formatspec

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par argon Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(len(tableau)):
        for j in range((tableau[i]))
    Est-ce que ces deux instructions, qui ont le même but, ont la même syntaxe??? Donc voilà.

    Citation Envoyé par argon Voir le message
    Comment faire pour afficher un tableau avec nombre avec des virgules ?
    Comme pour un tableau de nombres sans virgules, ou pour un tableau de chaines, ou pour un tableau de n'importe quoi : on boucle sur chaque élément du tableau et on affiche l'élément.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour

    J'ai utilisé le code de tyrtamos.

    python me renvoi l'erreur ci-dessous.

    print("{:10.2f}".format(tableau[i][j]),end=" ")
    TypeError: unsupported format string passed to numpy.ndarray.__format__

    Je ne suis pas sur, je pense que cela vient de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    k2 =np.array([7, 6, 5, 4, 3, 2])
    x = np.array([12, 12.6, 14.2, 16.2, 19.8, 32.1])-10
    A bientôt

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par argon Voir le message
    Je ne suis pas sur, je pense que cela vient de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    k2 =np.array([7, 6, 5, 4, 3, 2])
    x = np.array([12, 12.6, 14.2, 16.2, 19.8, 32.1])-10
    Ca vient surtout que tu traites "tableau" comme un tableau 2D alors que ce n'en est pas un.
    Un tableau 2D, c'est un tableau de tableaux. Chaque élément de tableau[i] doit être lui-même un tableau. Or quand tu écris f = 0 puis tableau = [..., ..., ..., ..., ..., ..., f] ben l'élément tableau[6] c'est pas un tableau mais un simple int.
    L'erreur n'est pas sur cet élément précis mais c'est celui que j'ai relevé et l'erreur peut alors très bien provenir d'un autre élément qui, lui-aussi, n'est pas ce qui est attendu quand on veut le traiter comme un tableau...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir

    J'ai corrigé l'erreur de ci-dessous.

    J'ai mis des crochés theta = [x/2*L] au lieu de theta = (x/2*L)

    Voici le résultat, les données ne s'affichent pas dans le bon ordre..




    Normalement, le tableau doit s'afficher dans cet ordre.



    Voici le code modifier.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    L = 183
    Ct = 3.0 * (10**(-4))
    OM = 0.05
    k2 =np.array([7, 6, 5, 4, 3, 2])
    x = np.array([12, 12.6, 14.2, 16.2, 19.8, 32.1])-10
     
    theta = (x/2*L)
     
    r1 = 3 * np.ones(6)
    r2 = k2 + 3
    r = r2 - r1
    F = (x*Ct)/(OM*2*L)
    f = (1/r**2)
     
     
    print("F", F)
     
    tableau = [k2, r2, x, theta, r1, r, f, F]
     
    for i in range(len(tableau)):
        print()
        for j in range(len(tableau[i])):
            if isinstance(tableau[i][j], int):
                print("{:7d}".format(tableau[i][j]), end=" ")
            else:
                print("{:10.2f}".format(tableau[i][j]),end=" ")
    Il faut peut-être i et j dans la boucle ?

    A bientôt

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par argon Voir le message
    Voici le résultat, les données ne s'affichent pas dans le bon ordre..
    Il n'y a pas de "bon" ou de "mauvais" ordre, juste un ordre de stockage et un ordre d'affichage. Ici les données s'affichent dans l'ordre dans lequel tu les as stockées. Si tu stockes [7, 6, 5, 4, 3, 2] puis [2, 2.6, 4.2, 6.2, 9.8, 22.1] ben le premier élément du tableau affiché c'est bien [7, 6, 5, 4, 3, 2] et le second c'est bien [2, 2.6, 4.2, 6.2, 9.8, 22.1]. Je ne vois aucune incohérence.
    Si maintenant l'affichage ne te convient pas et que tu veux l'afficher en écriture asiatique (du haut vers le bas) ben il te faut d'abord le faire pivoter. Ou alors inverser les boucles. C'est toi qui dirige ton code, pas ton code qui te dirige.

    Maintenant, d'un point de vue logique, si k2=7 est associé avec x=2 et que k2=6 est associé avec x=2.6, alors personnellement je les aurais gardés associés dans mon code. Si par exemple j'écris data=[{"k2" : 7, "x" : 2}, {"k2" : 6, "x" : 2.6}] je tiens chaque groupe ensemble. Tandis qu'en écrivant data=[[7, 6], [2, 2.6]] il me faut faire une manipulation ultérieure pour réassocier 7 avec 2 d'une part et 6 avec 2.6 d'autre part.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    Par défaut
    Salut,

    Citation Envoyé par argon Voir le message
    J'ai mis des crochés theta = [x/2*L] au lieu de theta = (x/2*L)

    Voici le résultat, les données ne s'affichent pas dans le bon ordre..
    Afficher les données des lignes en colonne, c'est juste parcourir le tableau différemment ou fabriquer le transposé.
    Et pour trouver comment faire pour gérer ses indices, on part d'un exemple comme T = [[1, 2, 3], [4, 5, 6]] et on réfléchit un peu avant d'essayer de coder...

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage des données dans un tableau
    Par RouRa22 dans le forum NetBeans
    Réponses: 1
    Dernier message: 14/07/2008, 18h59
  2. [MySQL] affichage des données dans un tableau avec mysql et php
    Par fofina dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/10/2007, 14h00
  3. affichage des données dans un tableau visible
    Par neoboy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/09/2007, 12h16
  4. [Tableaux] affichage des données dans un tableau
    Par bilane dans le forum Langage
    Réponses: 1
    Dernier message: 21/03/2007, 17h31
  5. Réponses: 6
    Dernier message: 17/07/2006, 15h07

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