如何将6×6矩阵划分为4个小方阵?reshape函数使用遇阻
拆分6×6矩阵为4个3×3子矩阵的解决方案
针对你要将6×6矩阵拆分为4个3×3子矩阵的需求,直接使用reshape函数无法实现(因为reshape是按元素线性顺序重新排列,而非按区域分块),更合适的方式是利用数组切片来提取对应区域。以下是具体实现方案:
基于NumPy的实现(推荐)
import numpy as np # 定义原始6×6矩阵 A = np.array([ [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, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36] ]) # 提取四个3×3子矩阵 A1 = A[:3, :3] A2 = A[:3, 3:] A3 = A[3:, :3] A4 = A[3:, 3:] # 验证结果 print("A1:\n", A1) print("\nA2:\n", A2) print("\nA3:\n", A3) print("\nA4:\n", A4)
切片逻辑说明
A[:3, :3]:取矩阵前3行、前3列,对应左上角的A1A[:3, 3:]:取矩阵前3行、后3列,对应右上角的A2A[3:, :3]:取矩阵后3行、前3列,对应左下角的A3A[3:, 3:]:取矩阵后3行、后3列,对应右下角的A4
普通Python列表的实现
如果你的矩阵是原生Python列表而非NumPy数组,可通过列表推导实现切片:
# 普通列表形式的矩阵 A = [ [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, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36] ] A1 = [row[:3] for row in A[:3]] A2 = [row[3:] for row in A[:3]] A3 = [row[:3] for row in A[3:]] A4 = [row[3:] for row in A[3:]]
内容的提问来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

