1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    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 émérite
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 813
    Points : 976
    Points
    976

    Par défaut

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

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    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 éclairé
    Inscrit en
    novembre 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 267
    Points : 304
    Points
    304

    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 : 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
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    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
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    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 : 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
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Inscrit en
    mai 2010
    Messages
    20
    Détails du profil
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éclairé
    Inscrit en
    novembre 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 267
    Points : 304
    Points
    304

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. [UI] connecter deux tableaux avec Tabs, sortable+droppable
    Par istiti dans le forum jQuery
    Réponses: 0
    Dernier message: 20/11/2012, 14h25
  2. problème dans la somme des deux nombre avec virgule
    Par aymen8219 dans le forum Débuter
    Réponses: 1
    Dernier message: 15/11/2011, 15h24
  3. Réponses: 8
    Dernier message: 02/12/2010, 19h39
  4. [PHP 5.0] [Tableaux] Trier deux tableaux avec array_multisort
    Par persia dans le forum Fonctions
    Réponses: 1
    Dernier message: 21/12/2008, 21h55
  5. [Debutant]Somme de deux nombres avec résultat connu
    Par Tchupa dans le forum JavaScript
    Réponses: 6
    Dernier message: 22/06/2007, 10h32

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