python 将矩阵顺时针旋转90度

例:[[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)  #因为默认逆时针旋转,所以这里转三次

 

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值