如何实现数组与矩阵对角线的逐元素求和?
解决数组与矩阵对角线逐元素求和的问题
嘿,我明白你想做什么了——把数组v和矩阵mx的主对角线元素逐个相加对吧?你之前用np.diagonal(mx,v)的方式不对,因为np.diagonal()的第二个参数是用来指定对角线偏移量的(比如主对角线是0,上对角线是1,下对角线是-1),不是用来传入要相加的数组的。
下面是正确的实现步骤:
步骤1:提取矩阵的主对角线元素
首先用np.diagonal()把矩阵mx的主对角线元素提取出来,得到一个和v长度相同的一维数组:
diag_mx = np.diagonal(mx)
步骤2:逐元素相加
直接用数组加法即可,NumPy会自动进行逐元素运算:
sum_result = diag_mx + v
可选:将结果放回原矩阵的对角线
如果你需要把相加后的结果替换回原矩阵的对角线位置,可以用np.fill_diagonal():
np.fill_diagonal(mx, sum_result)
完整代码示例
把这些步骤整合起来,完整代码如下:
import numpy as np mx = np.matrix([[0,0,0,0],[1,1,1,1],[2,3,4,5],[6,7,8,9]]) print("原矩阵:") print(mx) print('\n') v = np.array([20,0,10,0.5]) print("待相加的数组:") print(v) print('\n') # 提取对角线并相加 diag_mx = np.diagonal(mx) sum_result = diag_mx + v print("对角线与数组逐元素求和结果:") print(sum_result) print('\n') # 可选:将结果放回原矩阵对角线 np.fill_diagonal(mx, sum_result) print("更新对角线后的矩阵:") print(mx)
运行这段代码后,你就能得到想要的结果啦!
内容的提问来源于stack exchange,提问作者user9187374
相关产品推荐
相关产品推荐

