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 :

Traitement sur tableaux


Sujet :

Calcul scientifique Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut Traitement sur tableaux
    Bonjour!

    Bon, je débute en python et je me perds un peu dans les tableaux.

    Voici un bout de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    line=[]
    i = 0
    	for o in objet:
    		temp = contarr(array(o[i]))
    		line.append(temp)
    		i += 1
    Jusqu'ici tout va bien a priori

    Je me retrouve donc avec un tableau contenant des tableaux.

    Je voudrais inverser totalement mon tableau
    Exemple :
    t = [[1, 1, 1], [2,2,2], [3,3,3]]
    Je voudrais
    t = [[1,2,3], [1,2,3], [1,2,3]]

    Je ne m'en sors pas...

    Merci de votre aide

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,
    je ne comprends pas trop ton code (array? contrarr?).
    Essaye avec la fonction zip:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ma_liste = [[1,1,1],[2,2,2],[3,3,3]]
    print zip(*ma_liste)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [(1, 2, 3), (1, 2, 3), (1, 2, 3)]
    si tu as vraiment besoin de liste de liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print [list(z) for z in zip(*ma_liste)]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
    Bon python.

  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,

    Python a vraiment des possibilités étonnantes:

    On pourrait coder la transposition d'une matrice comme ça (code traditionnel):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def transpos(A):
        lgi, lgj = len(A), len(A[0])
        M=[[0 for i in xrange(lgi)] for j in xrange(lgj)]
        for i in range(0, lgi):
            for j in range(0, lgj):
                M[j][i]=A[i][j]
        return M
    Et on peut le faire, comme le dit pacificator, comme ça, ce qui est étonnamment simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    transpos2 = lambda A: [list(ligne) for ligne in zip(*A)]
    Les 2 donnant, bien entendu le même résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # matrice carrée
    A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    print transpos(A)
    [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    print transpos2(A)
    [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
     
    # Matrice quelconque
    A = [[1, 2], [3, 4], [5, 6]]
    print transpos(A)
    [[1, 3, 5], [2, 4, 6]]
    print transpos2(A)
    [[1, 3, 5], [2, 4, 6]]

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Si tu travailles sur des tableaux, utilises le module Numpy, transformes ta liste de liste en tableau et transposes-le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import numpy as np
     
    tnp = np.array(t)
    print tnp.T

Discussions similaires

  1. Réponses: 17
    Dernier message: 10/05/2011, 09h48
  2. Traitement sur un selectedIndex inexistant ?
    Par 10-nice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/08/2005, 10h33
  3. [C#] [.NET 1.1] [VSTUDIO 2003] Traitement sur les fontes
    Par stailer dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/08/2005, 19h53
  4. [VB.NET] Traitement sur chaine (simple)
    Par Tempotpo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 13h20
  5. [FLASH MX 2004] Traitements sur le resultat d'un AS.
    Par Med_Prog dans le forum Flash
    Réponses: 8
    Dernier message: 21/11/2004, 13h59

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