Python中的矩阵转置

4

我刚接触Python,正在研究矩阵转置,但发现代码很冗长,请问有没有简单的方法?

mymatrix=[(1,2,3),(4,5,6),(7,8,9),(10,11,12)] 
for myrow in mymatrix: 
    print(myrow) 
    print("\n") 
    t_matrix = zip(*mymatrix) 
for myrow in t_matrix: 
    print(myrow)
3个回答

7

要导入numpy,您需要先安装它。当应用于一维矩阵时,Numpy的转置返回类似的结果。

import numpy  
mymatrix=[[1,2,3],[4,5,6]] 
print(mymatrix) 
print("\n") 
print(numpy.transpose(mymatrix)) 

4
import numpy as np
matrix = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]] )
print(matrix.T)

不使用numpy


修改:适用于Python2和Python3

Python3

[*zip(*matrix)]

Python2

zip(*matrix)

优雅的替代方案,而且没有numpy,太棒了。 - Nathan McCoy
作为一条注释,这个zip解决方案仅适用于python2 - Netwave

4
使用zip函数:
mymatrix=[(1,2,3),(4,5,6),(7,8,9),(10,11,12)] 
myTransposedMatrix = list(zip(*mymatrix))

>>> myTransposedMatrix
[(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接