DfFdzbc 2022-06-10 22:07 采纳率: 100%
浏览 68
已结题

Python矩阵转置问题

将一个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
进一步问个问题,如何将内圈的数字也如最外圈一样转置

  • 写回答

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))
    

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 创建了问题 6月10日

悬赏问题

  • ¥15 Oracle触发器记录修改前后的字段值
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器