例:[[1,2,3],[4,5,6],[7,8,9]] 变为 [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
不用numpy的方法:先反转再转置 (因为是矩阵,反转可以[::-1]也可以matrix.reverse())
def trans90(matrix):
matrix = matrix[::-1] #先反转
rows,cols = len(matrix),len(matrix[0])
for i in range(rows): #做转置,对角线不交换,把右上三角换到左下三角
for j in range(i,cols): #注意从i开始,不要换了又把左下三角换回去了
if i==j:
continue
else:
matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]
return matrix
或用zip(*)进行转置
def tans90(matrix):
matrix = matrix[::-1]
res = []
for line in zip(*matrix):
res.append(list(line))
return matrix
#这里*解包,zip压缩 zip后变成zip类型,zip会把原有矩阵从第一列开始,把每一列打包成一个元祖,把元祖强转为list达到矩阵转置的效果
numpy的函数:
import numpy as np
matrix = np.rot90(matrix,3) #因为默认逆时针旋转,所以这里转三次