Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Candidat au titre de Membre du Club
    Profil pro LabCC
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Nom : LabCC

    Informations forums :
    Inscription : mai 2010
    Messages : 20
    Points : 10
    Points
    10

    Par défaut Somme de deux tableaux avec différentes dimensions

    Salut à toutes et à tous,

    Je reviens à vous pour une nouvelle question, je veux sommer deux tableaux d'integer.
    Je sais que c'est possible avec une boucle for mais j'essaye d'alléger l'exécution du code.
    J'explique mon problème, j'ai un tableau de deux dimensions (14,10) et un deuxième tableau à une seule dimension (10).
    J'ai vu qu'avec deux tableaux d'une dimension, le code est assez simple:
    [i+j for i,j in zip(tab1,tab2)]
    Est ce qu'il y'a une possibilité de modifier ce code afin de préciser la première dimension du tab2 par exemple.
    Style:
    [i+j for i,j in zip(tab1,tab2[k])] avec k ligne 10 du tab2(14,12)
    J'espère que ma question est assez claire, merci pour vos commentaires et suggestions.

    +++
    LabChNe

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 750
    Points : 785
    Points
    785

    Par défaut

    claire? non pas trop ...
    avec un exemple d'input/output par contre ...

  3. #3
    Candidat au titre de Membre du Club
    Profil pro LabCC
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Nom : LabCC

    Informations forums :
    Inscription : mai 2010
    Messages : 20
    Points : 10
    Points
    10

    Par défaut

    Dsl de ne pas être clair,
    Alors j'ai un premier tableau tab1:
    tab1=[1,1,0,0,0,0,0,0,0,0] ( une dimension)
    le deuxième tableau est à deux dimensions:
    tab2=[[0,0,0,-1,0,-1,1,0,0,0],
    [1,1,-1,0,0,1,-1,0,0,0],
    [0,-1,0,0,0,0,-1,1,0,0],
    [-1,0,0,0,0,0,0,-1,1,0],
    [0,-1,0,0,-1,0,0,0,0,1],
    [0,0,0,1,1,0,0,0,0,-1],
    [0,0,1,0,0,0,0,1,-1,0],
    [0,0,0,1,1,0,0,-1,0,0],
    [0,0,0,0,0,0,-1,0,0,0],
    [0,0,0,0,1,-1,0,0,0,0],
    [0,0,0,0,-1,1,0,0,0,0],
    [-1,1,1,0,0,0,0,0,0,0],
    [0,0,0,-1,0,0,0,0,0,0],
    [0,0,1,0,1,0,0,0,0,0]]

    Comment je fais pour sommer le tableau tab1 avec la dernière ligne du tableau tab2 (somme 1 à 1) sans passer par une boucle ou quoi que ce soit.

    Le résultat pour l'exemple est:
    [1,1,0,0,0,0,0,0,0,0]
    +
    [0,0,1,0,1,0,0,0,0,0]
    =
    [1,1,1,0,1,0,0,0,0,0]

    Je pense que c'est possible de la faire avec matlab.
    Je remet le code que j'ai trouvé sur Internet pour la somme 1 à 1 de deux tableaux à 1 dimension:
    [i+j for i,j in zip(tab1,tab2)]

    Je crois que je ne peux pas être plus clair que ca.
    Merci pour vos réponses.

    +++
    LabChNe

  4. #4
    Membre actif
    Inscrit en
    novembre 2008
    Messages
    235
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 235
    Points : 188
    Points
    188

    Par défaut

    Je ne comprends pas non plus la question... Où alors tu as déjà écrit la réponse dedans :-)
    Est-ce ça que tu cherches ?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    tab1=[1,1,0,0,0,0,0,0,0,0]
    tab2=[[0,0,0,-1,0,-1,1,0,0,0],
    [1,1,-1,0,0,1,-1,0,0,0],
    [0,-1,0,0,0,0,-1,1,0,0],
    [-1,0,0,0,0,0,0,-1,1,0],
    [0,-1,0,0,-1,0,0,0,0,1],
    [0,0,0,1,1,0,0,0,0,-1],
    [0,0,1,0,0,0,0,1,-1,0],
    [0,0,0,1,1,0,0,-1,0,0],
    [0,0,0,0,0,0,-1,0,0,0],
    [0,0,0,0,1,-1,0,0,0,0],
    [0,0,0,0,-1,1,0,0,0,0],
    [-1,1,1,0,0,0,0,0,0,0],
    [0,0,0,-1,0,0,0,0,0,0],
    [0,0,1,0,1,0,0,0,0,0]]
     
    k=10
     
    print [i+j for i,j in zip(tab1,tab2[k])]
    ou un truc comme ça :

    Code :
    1
    2
     
    print [[i+j for i,j in zip(tab1,row2)] for row2 in tab2]

  5. #5
    Candidat au titre de Membre du Club
    Profil pro LabCC
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Nom : LabCC

    Informations forums :
    Inscription : mai 2010
    Messages : 20
    Points : 10
    Points
    10

    Par défaut On s'approche

    Merci pour ta réponse.

    print [[i+j for i,j in zip(tab1,row2)] for row2 in tab2]

    Ce code effectue une somme 1à1 de tab1 sur tous les lignes de tab2.
    Ce que je veux, c'est effectuer la somme d'une ligne de tab2 (par exemple la première ligne) avec le tab1.

    fatbob, suis-je clair??

    +++
    LabChNe

  6. #6
    Candidat au titre de Membre du Club
    Profil pro LabCC
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Nom : LabCC

    Informations forums :
    Inscription : mai 2010
    Messages : 20
    Points : 10
    Points
    10

    Par défaut

    Citation Envoyé par fatbob Voir le message
    Je ne comprends pas non plus la question... Où alors tu as déjà écrit la réponse dedans :-)
    Est-ce ça que tu cherches ?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    tab1=[1,1,0,0,0,0,0,0,0,0]
    tab2=[[0,0,0,-1,0,-1,1,0,0,0],
    [1,1,-1,0,0,1,-1,0,0,0],
    [0,-1,0,0,0,0,-1,1,0,0],
    [-1,0,0,0,0,0,0,-1,1,0],
    [0,-1,0,0,-1,0,0,0,0,1],
    [0,0,0,1,1,0,0,0,0,-1],
    [0,0,1,0,0,0,0,1,-1,0],
    [0,0,0,1,1,0,0,-1,0,0],
    [0,0,0,0,0,0,-1,0,0,0],
    [0,0,0,0,1,-1,0,0,0,0],
    [0,0,0,0,-1,1,0,0,0,0],
    [-1,1,1,0,0,0,0,0,0,0],
    [0,0,0,-1,0,0,0,0,0,0],
    [0,0,1,0,1,0,0,0,0,0]]
     
    k=10
     
    print [i+j for i,j in zip(tab1,tab2[k])]
    ou un truc comme ça :

    Code :
    1
    2
     
    print [[i+j for i,j in zip(tab1,row2)] for row2 in tab2]
    excuse moi fatbob, je n'ai pas lu ton message en totalité.
    Merci, tu as résolu mon problème.
    Merci à tous.

    +++
    LabChNe

  7. #7
    Candidat au titre de Membre du Club
    Profil pro LabCC
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Nom : LabCC

    Informations forums :
    Inscription : mai 2010
    Messages : 20
    Points : 10
    Points
    10

    Par défaut une dernière question

    Une petite dernière question,

    Comment on fait pour affecter le résultat de la somme à une des variables.
    J'ai essayé de faire comme ca:
    tab1=[i+j for i,j in zip(tab1,tab2[k])]
    Je recois un message du genre:
    Code :
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "C:\Users\ch1jbelgac1\Desktop\Python\essai2", line 27, in <module>
        fran(2)
      File "C:\Users\ch1jbelgac1\Desktop\Python\essai2", line 24, in fractran
        tab1=[i+j for i,j in zip(tab1,tab2[i])]
    UnboundLocalError: local variable 'n' referenced before assignment

    Quelqu'un a une idée????

    +++
    LabChNe

  8. #8
    Membre actif
    Inscrit en
    novembre 2008
    Messages
    235
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 235
    Points : 188
    Points
    188

    Par défaut

    Code :
    1
    2
        tab1=[i+j for i,j in zip(tab1,tab2[i])]
    2 utilisations pour une seule variable, c'est une de trop...
    tab2[i (?)] doit faire référence à une autre variable définie plus haut dans le code...

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •