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

Python中如何对numpy数组每行的正元素求和?

解决numpy数组每行正元素求和问题

你的代码当前输出的是每行正元素的个数,而非它们的和——因为np.sum(A[i]>0)是对布尔数组(正元素为True,对应数值1)求和,本质是计数。要得到正元素的和,需要先提取每行的正元素再求和,或者用numpy的向量化操作高效处理。

方法1:修改原循环代码

直接在循环里提取当前行的正元素后求和:

import numpy as np
A=np.array([[0,-2,3],[1,0,6],[7,8,0]])
B1=[]
for i in range(len(A)):
    # 筛选出当前行的正元素,再计算总和
    positive_elements = A[i][A[i] > 0]
    B = np.sum(positive_elements)
    B1.append(B)
print(B1)

输出:

[3, 7, 15]

方法2:numpy向量化操作(更高效)

利用numpy的广播和按轴求和功能,避免循环,适合处理大规模数组:

方式A:使用np.where替换非正元素为0后求和

import numpy as np
A=np.array([[0,-2,3],[1,0,6],[7,8,0]])
# 将非正元素替换为0,然后沿行(axis=1)求和
B = np.where(A > 0, A, 0).sum(axis=1)
print(B.tolist())

方式B:用掩码与原数组相乘后求和

import numpy as np
A=np.array([[0,-2,3],[1,0,6],[7,8,0]])
# 布尔掩码与原数组相乘,非正元素会被置为0,再沿行求和
B = (A * (A > 0)).sum(axis=1)
print(B.tolist())

两种方式的输出均为:

[3, 7, 15]

内容的提问来源于stack exchange,提问作者isaacmodi123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:14:58