You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Numpy将矩阵转换为分块矩阵并快速提取子矩阵

如何使用Numpy将矩阵转换为分块矩阵并快速提取子矩阵

嗨,我来教你用Numpy快速把你的4x4矩阵拆成想要的A、B、C、D四个子矩阵,超简单的!

首先你得确保已经导入了Numpy库,然后把原始矩阵转换成Numpy数组(如果还不是的话)。比如先按照你的示例创建矩阵:

import numpy as np

# 按照你的示例定义4x4矩阵
matrix = np.array([
    [A11, A12, A13, A14],
    [A21, A22, A23, A24],
    [A31, A32, A33, A34],
    [A41, A42, A43, A44]
])

当然你也可以把A11这些换成具体的数值,比如1、2、3这类,完全不影响切片的逻辑。

接下来就用Numpy的切片索引来快速提取子矩阵,这是Numpy最方便的特性之一:

  • 提取A(前两行,前两列):A = matrix[:2, :2]
  • 提取B(前两行,后两列):B = matrix[:2, 2:]
  • 提取C(后两行,前两列):C = matrix[2:, :2]
  • 提取D(后两行,后两列):D = matrix[2:, 2:]

我给你解释下切片的逻辑:Numpy数组是行在前,列在后的索引顺序,:的用法很灵活:

  • 比如[:2]表示从开头(索引0)取到索引2之前的元素,也就是前2行/列;
  • [2:]表示从索引2开始取到末尾,也就是剩下的2行/列;
  • 逗号前面控制行的范围,逗号后面控制列的范围。

要是你拿不准,用具体数值测试下就明白了,比如我用一组真实数值写个完整示例:

import numpy as np

# 用具体数值构建测试矩阵
test_matrix = np.array([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
])

# 提取子矩阵
A = test_matrix[:2, :2]
B = test_matrix[:2, 2:]
C = test_matrix[2:, :2]
D = test_matrix[2:, 2:]

# 打印结果看看
print("子矩阵A:\n", A)
print("\n子矩阵B:\n", B)
print("\n子矩阵C:\n", C)
print("\n子矩阵D:\n", D)

运行这段代码你会得到:

子矩阵A:
 [[1 2]
 [5 6]]

子矩阵B:
 [[3 4]
 [7 8]]

子矩阵C:
 [[ 9 10]
 [13 14]]

子矩阵D:
 [[11 12]
 [15 16]]

完全符合你想要的分块结果!

另外要是以后遇到更大的矩阵,比如6x6要分成3x3的块,只需要把切片里的2换成3就行,逻辑是通用的,非常灵活。

备注:内容来源于stack exchange,提问作者Definitely Not a English Major

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 12:18:10