RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1348308
Accepted
Максим Филимонов
Максим Филимонов
Asked:2022-04-11 00:52:12 +0000 UTC2022-04-11 00:52:12 +0000 UTC 2022-04-11 00:52:12 +0000 UTC

将矩阵划分为子矩阵

  • 772

输入 N - 矩阵的大小,K - 子矩阵的大小。
接下来引入一个矩阵
Let N = 3, K = 2

我们的 N*N 矩阵

1 2 1
1 1 2
1 1 1

所有大小为 K*K 的子矩阵:

[1 2
 1 1]

[2 1
 1 2]

[1 1
 1 1]

[1 2
 1 1]

如何对子矩阵进行相同的发现?从什么推回来?他唯一做的就是创建一个由 k*k 矩阵组成的三维数组,其中填充了零。

python
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Zhihar
    2022-04-11T01:51:29Z2022-04-11T01:51:29Z

    如果在额头上,那么像这样:

    matrix = [[1, 2, 3, 'a'], [4, 5, 6, 'b'], [7, 8, 9, 'c'], [10, 11, 12, 'd']]
    size = (3, 2)
    
    for j in range(len(matrix) - size[1] + 1):
        for i in range(len(matrix[j]) - size[0] + 1):
            for y in range(size[1]):
                line = []
                for x in range(size[0]):
                    line.append(matrix[j + y][i + x])
                print(line)
            print()
    

    粗略地说,需要遍历矩阵,使子矩阵的1个元素在范围内:matrix_width - submatrix_width,matrix_height - submatrix_height

    然后使用第一个元素的坐标,找到矩阵中子矩阵的所有其他元素

    或者如果这是在公式级别编写的,那么:

    submatrix[x][y] = matrix[i + x][j + y]
    

    其中 (i, j) 是矩阵中子矩阵的第一个(左上)元素的坐标

    附言

    代码可以稍微简化(对于放荡的爱好者):

    [[[print([matrix[j + y][i + x] for x in range(size[0])]) for y in range(size[1])] + [print()] for i in range(len(matrix[j]) - size[0] + 1)] for j in range(len(matrix) - size[1] + 1)]
    
    • 1
  2. GrAnd
    2022-04-11T02:08:11Z2022-04-11T02:08:11Z

    如果将初始矩阵表示为平面列表,那么解决方案相当简单,并且适合一行。

    matrix = [1, 2, 1,
              1, 1, 2,
              1, 1, 1]
    
    N = int(len(matrix)**0.5)
    K = N - 1
    
    k_matrixes = [sum((matrix[rr*N+c:rr*N+c+K] for rr in range(r,r+K)), []) for r in range(N-K+1) for c in range(N-K+1)]
    
    print(k_matrixes)
    
    [[1, 2, 1, 1], [2, 1, 1, 2], [1, 1, 1, 1], [1, 2, 1, 1]]
    
    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5