Casa > C > Como Transpor Um Array Em Python

Como transpor um array em Python

Desde que numPy está nos tópicos, presumo que a sugestão de Leo Mauro para usar numpy.array.transpose() é aceitável. Entretanto, suponha que você não tenha o numPy instalado, ou não queira o overhead das funções de importação dele, mas você ainda queira fazer contas com matrizes/vetores em python.

Em vez de ter um tipo de dado personalizado para representar nossos vetores/matrices, nós usaremos listas de listas. Então um vetor de linha será como [[1,2,3,4]], um vetor de coluna será como [[1],[2],[3],[4]], e uma matriz 3x3 será como [[1,2,3],[4,5,6],[7,8,9]].

Se fizermos esta escolha, então podemos definir a matriz transpor usando funções embutidas como so:

  1. def transpose(a): 
  2. lista de retorno(map(list,zip(*a))) 

O verdadeiro trabalho é feito desempacotando a lista de listas e depois zipando os elementos nos índices correspondentes em tupples, o que realiza a transposição. Then we map list over this list of tuples to turn the tuples into lists, then extract all the lists from the map object into a new list.

By the by, you can then implement matrix multiplication as:

  1. def matrixmult(a,b): 
  2. return [[sum(x*y for x,y in zip(i,j)) for j in transpose(b)] for i in a] 

Still totally native built-in Python.

De Cherice

Como podemos converter um array unidimensional para um array bidimensional em Python? :: How to give input to an array in Python