问题描述
我想从最高置信度模型中逐个选择值
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
。