我有两个名为predicted_labels_ssup0
和predicted_labels_ssup1
的列表,其中包含每个实例的SVM预测概率。一些如何,一些概率值完全相等。我的目标是提取最高概率值的索引并将其保存在另一个名为confident_inst_indexes
的列表中。
以下是我的表现:
confident_inst_indexes=[]
for x,y in zip(predicted_labels_ssup0,predicted_labels_ssup1):
if (x > 0.997):
#print('x',x)
#print(predicted_labels_ssup0.tolist().index(x))
confident_inst_indexes= np.append(confident_inst_indexes,predicted_labels_ssup0.tolist().index(x))
elif (y > 0.995):
#print('y',y)
#print(predicted_labels_ssup1.tolist().index(y))
confident_inst_indexes= np.append(confident_inst_indexes,predicted_labels_ssup1.tolist().index(y))
这里的问题是,相等且满足固定条件的概率值总是得到列表的相同索引,该列表是该值的第一个占用的索引。
我该如何解决这个问题?任何命题?
谢谢
答案 0 :(得分:0)
如果我很清楚你想要做什么,你可以直接使用numpy库中的argwhere。它返回满足条件的所有索引
a = np.argwhere(predicted_labels_ssup0 > 0.997)
b = np.argwhere(predicted_labels_ssup1 > 0.995)
confident_inst_indexes = [a, b] # you may have to flatten too
我希望它有所帮助,
尼古拉斯
答案 1 :(得分:0)
一种简单的方法是在迭代时使用枚举来获取索引:
a = [1,5,3,5]
b = [0,2,0,4]
for index, (x,y) in enumerate(zip(a, b)):
print(index, x, y)
您似乎使用tolist().index(x)
从numpy thingy中搜索索引,这将始终为您提供x的第一个匹配项。也许这就是你总是获得相同索引的原因。