You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现数组与矩阵对角线的逐元素求和?

解决数组与矩阵对角线逐元素求和的问题

嘿,我明白你想做什么了——把数组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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:27:40