如何实现NxN矩阵指定正方形区域的顺时针90度旋转
N×N矩阵指定正方形区域顺时针旋转90度实现
我有一个N×N矩阵,需要选取该矩阵的特定区域,将其顺时针旋转90度。旋转区域的定义需满足以下条件:
- 左上角坐标为(a, b)
- 右下角坐标为(a + c, b + c)
- 该正方形区域的边长为c + 1
例如当输入参数a=2、b=3、c=3时,输出效果如下所示:
实现代码
原代码存在缩进错误,旋转操作需要放在for循环内部才能执行所有输入的旋转指令,修正后的代码如下:
import numpy as np # 输入矩阵边长N N = int(input()) # 输入需要执行的旋转操作次数S S = int(input()) # 初始化N×N矩阵,元素值为0到N²-1 arr = np.array(range(0,N*N)) arr.shape = N,N for i in range(S): a,b,c = [int(x) for x in input().split()] # 截取指定正方形区域,顺时针旋转90度后赋值回原位置 # np.rot90默认逆时针旋转,指定axes=(1,0)可实现顺时针旋转效果 arr[a:a+c+1,b:b+c+1] = np.rot90(arr[a:a+c+1,b:b+c+1], axes=(1,0)) print(arr)
内容的提问来源于stack exchange,提问作者Royal Deer
相关产品推荐
相关产品推荐

