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:
- def transpose(a):
- 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:
- def matrixmult(a,b):
- 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.