如何将矩阵总和添加至其所有对角元素?附代码与示例
给矩阵对角元素添加矩阵总和的实现方案
核心需求
将矩阵的总和值,分别加到矩阵的每一个对角元素上,非对角元素保持不变。
实现方法
方法1:直接修改原矩阵(高效直观)
利用np.diag_indices获取对角元素的索引,直接对这些位置的元素进行赋值操作:
import numpy as np # 定义原始矩阵 A = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) # 计算矩阵总和 A_sum = A.sum() # 获取对角元素的索引(适用于n×n方阵) diag_i, diag_j = np.diag_indices(A.shape[0]) # 给所有对角元素加上总和 A[diag_i, diag_j] += A_sum # 输出结果 print(A)
执行后输出:
[[36 1 2] [ 3 40 5] [ 6 7 44]]
方法2:生成新矩阵(不修改原数据)
通过构造一个仅对角线为矩阵总和的辅助矩阵,与原矩阵相加得到结果:
import numpy as np A = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) A_sum = A.sum() # 构造对角线为A_sum的矩阵,与原矩阵相加 A_new = A + np.diag([A_sum] * A.shape[0]) print(A_new)
该方法不会改变原矩阵A,适合需要保留原始数据的场景。
内容的提问来源于stack exchange,提问作者ApplePie123
相关产品推荐
相关产品推荐

