如何使用Python从给定4×4矩阵中提取3×3矩阵并统计可生成数量
实现逻辑
4×4矩阵提取连续的3×3子矩阵时,行和列的起始索引可选范围都是0和1(因为4-3+1=2个可选起始位),最终可生成的3×3子矩阵总数量为2×2=4个。
切片提取的逻辑很简单:遍历所有合法的行起始索引和列起始索引,每次取从起始索引开始的连续3行、每行取连续3个元素即可。
可直接运行的Python代码
# 定义输入的4×4矩阵 matrix = [ [1, 2, 3, 4], [2, 3, 4, 5], [6, 7, 8, 9], [10, 11, 12, 13] ] submatrix_size = 3 row_count = len(matrix) col_count = len(matrix[0]) submatrices = [] # 遍历所有合法的行起始位置 for i in range(row_count - submatrix_size + 1): # 遍历所有合法的列起始位置 for j in range(col_count - submatrix_size + 1): # 切片提取3×3子矩阵 sub = [row[j:j+submatrix_size] for row in matrix[i:i+submatrix_size]] submatrices.append(sub) # 输出结果 print(f"可生成的3×3子矩阵总数量:{len(submatrices)}") for idx, sub in enumerate(submatrices, 1): print(f"\n第{idx}个3×3子矩阵:") for row in sub: print(row)
运行输出结果
- 可生成的3×3子矩阵总数量:4
- 第1个3×3子矩阵:
[1, 2, 3] [2, 3, 4] [6, 7, 8]
- 第2个3×3子矩阵:
[2, 3, 4] [3, 4, 5] [7, 8, 9]
- 第3个3×3子矩阵:
[2, 3, 4] [6, 7, 8] [10, 11, 12]
- 第4个3×3子矩阵:
[3, 4, 5] [7, 8, 9] [11, 12, 13]
内容的提问来源于stack exchange,提问作者Jaswanth Reddy
相关产品推荐
相关产品推荐

