将一个5*5的矩阵的最外圈数字逆时针移动一个单位。
原矩阵
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
转置后
2 3 4 5 10
1 7 8 9 15
6 12 13 14 20
11 17 18 19 25
16 21 22 23 24
进一步问个问题,如何将内圈的数字也如最外圈一样转置

Python矩阵转置问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 溪风沐雪 2022-06-10 22:38关注
先给个外层旋转可适配n*n的,刚才弄成顺时针的了:
import numpy as np def printLst(lst): for row in lst: for i in row: print(str(i).rjust(3),end=' ') print() print('='*100) def turn0(lst,n): arr = np.array(lst) turnindex = np.array([list(arr[0,:-1]),list(arr[:-1,n-1]),list(arr[n-1,1:][::-1]),list(arr[1:,0][::-1])]) turnindex = list(np.reshape(turnindex,(1,(n-1)*4))[0]) newindex = turnindex.copy() newindex[-1] = turnindex[0] newindex[0:-1] = turnindex[1:] lst = list(arr.reshape((1,n**2))[0]) for i in range(len(lst)): t = lst[i] if t in turnindex: lst[i] = newindex[turnindex.index(t)] lst = list(np.array(lst).reshape((n,n))) return lst n = int(input('请输入n:')) lst = [] for i in range(n): row = [] for j in range(n): row.append(n*i+j+1) lst.append(row) printLst(lst) printLst(turn0(lst,n))
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用