python旋转矩阵_48旋转图像旋转矩阵Python,48RotateImage

输入一个表示图像的

n

x

n

2D矩阵。将图像旋转90度(顺时针)

注意:

必须

就地

旋转图像,这意味着您必须直接修改输入2D矩阵。

不要

分配另一个2D矩阵并进行旋转。

Input: matrix=[[1,2,3],[4,5,6],[7,8,9]]

Output: [[7,4,1],[8,5,2],[9,6,3]]

上面为数字下面为旋转后之前的行列位置

由于不可以用其他矩阵,将数存入新的矩阵的想法流产,但是可以作为参考

n = np.arange(1, 17).reshape([4,4])

l=len(n)

res=np.zeros([l,l],dtype=int)

# res=[[0 for x in range(l)] for y in range(l)]

for a in range(l):

temp = 0

for b in range(l-1,-1,-1):

res[a][temp]=n[b][a]

temp+=1

print(res)

**************************

[[13 9 5 1]

[14 10 6 2]

[15 11 7 3]

[16 12 8 4]]

正儿八经的解法, 如果直接将行列换位置, 那么就会形成转置矩阵, 没有旋转90°,所以要在之前做一下矩阵的翻转。

matrix.reverse()-----------[[7, 4, 1], [8, 5, 2], [9, 6, 3]]

然后按照转置的方法将行列换位置就ok了

class Solution:

def rotate(self, matrix: List[List[int]]) -> None:

"""

Do not return anything, modify matrix in-place instead.

不要返回任何东西, 只需要修改矩阵

"""

matrix.reverse()

l=len(matrix)

for i in range(l):

for j in range(i):

matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]

这个方法占用内存少, 而且比较快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值