当另一个数组等于 1 时获取 numpy 数组的总和

get sum of numpy array when another array equals 1

我正在尝试创建自定义评分函数,但我在最后一行遇到问题。

def scorer(y_true, y_pred):
    y_pred1 = shift(y_pred,1)
    y_pred2 = shift(y_pred,2)
    target = y_pred - y_true
    action = np.where(target > 0, 1, 0)
    diff = y_pred2 - y_pred1
    score = (action == 1).sum(diff)

当该行的操作等于 1 时,我的输出应该是差异行的总和。

Diff Action
1.28 1
2.56 0
.64 1
.32 0
5.12 0

例如,在本例中为 1.28+.64=1.92

您可以将 diff 直接放入 np.where:

action = np.where(target > 0, y_pred2 - y_pred1, 0)     

然后求和action,通过

sum(action)