通过List中的索引问题包含python中的相等值

时间:2018-05-26 16:57:14

标签: python list keras svm

我有两个名为predicted_labels_ssup0predicted_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))

这里的问题是,相等且满足固定条件的概率值总是得到列表的相同索引,该列表是该值的第一个占用的索引。

我该如何解决这个问题?任何命题?

谢谢

2 个答案:

答案 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的第一个匹配项。也许这就是你总是获得相同索引的原因。