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 :

Transposée d'une matrice


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut Transposée d'une matrice
    Bonjour,

    Je cherche à écrire un programme qui donne la transposée d'une matrice de taille n(lignes)-p(colonnes). Je peux déjà créer une matrice p-n. Il faut ensuite inverser les coefficients de sorte à ce que M1[i][j]=M2[j][i] avec M2 la matrice transposée de M1.
    Je crée donc deux boucles for imbriquées:

    for i in range(n):
    for j in range(p):
    M2[j][i]=M1[i][j]

    Seulement cela ne fonctionne pas.
    Par exemple si M1=[[1,2,3],[4,5,6]] l'algorithme me donne M2=[[3,6],[3,6],[3,6]]. Pourriez-vous m'indiquer pourquoi mon programme ne fonctionne pas ? Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 43
    Par défaut
    Bonjour,

    Pour faire des opérations sur des matrices je te conseil de passer par Numpy, c'est plus clair et plus rapide. Avec Numpy tu peux transposer une matrice A en utilisant la fonction "np.transpose(A)".

    Si tu veux contourner l'utilisation de Numpy tu peux utiliser la fonction "zip"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A=[[1,2,3],[4,5,6]]
    zip(*A)
    Sinon ta méthode fonctionne bien, c'est juste la manière de déclarer M2 qui a du la perturber (regarde à "Comment créer une liste de listes de nombres (ou tableau à 2 dimensions) ?" : http://python.developpez.com/faq/?page=Liste#listlist)

    Du coup si tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    M1=[[1,2,3],[4,5,6]]
    n=len(M1)
    p=len(M1[0])
    M2=[0]*p
    for i in range(len(M2)):
        M2[i]=n*[0]
    for i in range(n):
        for j in range(p):
            M2[j][i]=M1[i][j]
    Ca devrait marcher.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut
    Merci beaucoup. J'avais en effet défini la matrice M2 de cette façon M2=p*[n*[0,]], je n'avais pas du tout pensé à un problème de case mémoire. Merci encore.

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

Discussions similaires

  1. Transposée d'une matrice
    Par lucaordi dans le forum Mathématiques - Sciences
    Réponses: 4
    Dernier message: 22/07/2008, 18h08
  2. [Débutant] Transposée d'une matrice
    Par swayly dans le forum Pascal
    Réponses: 9
    Dernier message: 01/05/2008, 18h40
  3. Réponses: 2
    Dernier message: 21/02/2008, 09h49
  4. Transposée d'une matrice
    Par zied212 dans le forum Cobol
    Réponses: 17
    Dernier message: 03/12/2007, 16h54
  5. Transposée d'une matrice
    Par Poseidon62 dans le forum Ada
    Réponses: 1
    Dernier message: 07/04/2007, 17h46

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