Maison >développement back-end >Tutoriel Python >Comment puis-je transposer efficacement une matrice 2D en Python ?

Comment puis-je transposer efficacement une matrice 2D en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 06:51:09339parcourir

How Can I Efficiently Transpose a 2D Matrix in Python?

Transposition de matrice en Python

La transposition de matrice consiste à retourner les lignes et les colonnes d'une matrice pour créer une nouvelle matrice avec ses dimensions d'origine inversées. Voyons comment développer une fonction Python pour transposer une matrice 2D.

Vous avez fourni une fonction Python, mais elle ne fonctionne pas correctement. Examinons votre code et identifions les erreurs. Dans votre fonction :

  • Vous créez une nouvelle matrice transposée avec la bonne hauteur mais une largeur incorrecte. Il devrait s'agir de [Aucun] * len(anArray) au lieu de [Aucun] * len(anArray[0]).
  • Vous écrasez les valeurs dans transposed[t] à chaque itération. Pour créer une nouvelle colonne, vous devez ajouter la valeur à la liste existante dans transposed[t].

Voici une version corrigée de votre fonction :

def matrixTranspose(anArray):
    transposed = [[] for _ in range(len(anArray))]
    for t in range(len(anArray)):
        for tt in range(len(anArray[t])):
            transposed[tt].append(anArray[t][tt])
    return transposed

Un autre concis La solution existe à l'aide de la fonction zip intégrée de Python, qui combine les éléments correspondants de plusieurs itérables. Il transpose la matrice en créant des tuples à partir des colonnes puis en les reconvertissant en listes :

transposed = list(zip(*anArray))

Pour Python 3, préférez utiliser l'opérateur * pour décompresser les tuples et créer une liste de listes :

transposed = [*zip(*anArray)]

Ces méthodes transposeront efficacement une matrice 2D en Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn