如何在numpy数组中按指定条件应用公式(如正数值求和)
错误原因
你原来的代码存在两个问题:
all是numpy数组的内置方法,不是属性,调用时需要加括号,正确写法为wk.all()- 逻辑不符合需求:
wk.all() > 0的作用是判断数组中所有元素都大于0,你的数组中存在0和负数,该判断永远为False,就算语法正确也不会执行求和逻辑,也没法实现只对正数求和的需求。
正确实现
你可以用numpy的布尔索引筛选符合条件的元素后再求和,两种常用写法效果一致:
- 调用
np.sum时传入where参数指定求和条件
import numpy as np wk = np.array([1, 0, 3, -4]) result = np.sum(wk, where=wk > 0)
- 先通过布尔索引取出所有正数再求和
result = wk[wk > 0].sum()
两种写法的计算结果都是4,符合需求。
内容的提问来源于stack exchange,提问作者dzdws
相关产品推荐
相关产品推荐

