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
.
我想从元素方面从最高置信度模型中选择值
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
.