如何用Python的NumPy模块创建指定分块矩阵并整理其对角线为4×2矩阵
Python:分块矩阵构造与对角线元素提取
需求
- 创建两个元素为0-9随机整数的4×4矩阵A和B
- 构造如下形式的分块矩阵C:
C = ⎡A B⎤ ⎣B A⎦ - 提取C的主对角线元素,将其整理为4×2的矩阵
修正后的实现代码
import numpy as np # 生成4×4随机整数矩阵(元素取值0-9) matrix_A = np.random.randint(10, size=(4, 4)) matrix_B = np.random.randint(10, size=(4, 4)) # 正确构造8×8的分块矩阵C matrix_C = np.block([[matrix_A, matrix_B], [matrix_B, matrix_A]]) # 提取主对角线元素并重塑为4×2矩阵 diag_elements = matrix_C.diagonal() result_matrix = diag_elements.reshape(4, 2) print(f'分块矩阵C:\n{matrix_C}') print(f'整理后的对角线元素矩阵:\n{result_matrix}')
关键说明
- 分块矩阵构造:原代码使用
np.array()会生成四维数组(2,2,4,4),而非所需的二维分块矩阵。改用np.block()能正确拼接子矩阵,得到8×8的二维矩阵C。 - 对角线提取:
matrix_C.diagonal()会提取主对角线的8个元素,返回一维数组。 - 矩阵重塑:
reshape(4,2)将一维数组转换为4行2列的矩阵,满足需求。
内容的提问来源于stack exchange,提问作者Mulham
相关产品推荐
相关产品推荐

