Numpy 给出两个具有值和置信度的数组创建一个最高置信度值的数组

Numpy given two arrays with values and confidence create an array of highest confidence values

我想从元素方面从最高置信度模型中选择值

vals1 = np.array( [0, 0, 11, 12, 0, 0, 13, 14]) # predicted values using method 1
probs1 = np.array([0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2]) # predicted values using method 1
vals2 = np.array( [0, 21, 0, 22, 0, 23, 0, 24]) # predicted values using method 2
probs2 = np.array([0.1, 0.2, 0.3, 0.4, 0.6, 0.7, 0.8, 0.9]) # predicted values using method 2

# Desired result : [0, 0, 11, 12, 0, 23, 0, 24]

我可以在一个循环中按元素进行:

result = np.zeros(vals1.shape[0])
for i in range(vals1.shape[0]):
    result[i] = vals1[i] if probs1[i] > probs2[i] else vals2[i]
return result

像这样 select 元素的正确 numpy 方法是什么?

正如@HansHirse 在评论中提到的:

np.where(probs1 > probs2, vals1, vals2)

对于每个元素,检查条件,如果它是 True returns 对应的 vals1 元素,否则 vals2.