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

问题描述

我想从最高置信度模型中逐个选择值

vals1 = np.array( [0,11,12,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,22,23,24]) # predicted values using method 2
probs2 = np.array([0.1,0.2,0.9]) # predicted values using method 2

# Desired result : [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

选择这种元素的正确的numpy方法是什么?

解决方法

如@HansHirse在评论中所述:

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

检查每个元素的条件,如果条件为True,则返回vals1的对应元素,否则返回vals2