獲取list中Top K個值對應的索引

2021-10-12 17:06:36 字數 938 閱讀 4949

在得到概率分布的list之後,想要得到 top k個概率值及其索引,因為索引對應著label id。

import numpy as np

p = [0.07, 0.2, 0.1, 0.03, 0.1, 0.5]

topk = 2

print("方法1:")

index_list = sorted(range(len(p)), key=lambda i: p[i])[-topk:] # sorted(range(len(p)), key=lambda i: p[i], reverse=true)[:2]

pro_list = np.array(p)[index_list]

print("indexs={}".format(index_list))

print("pro values={}".format(pro_list))

import numpy as np

ind = np.argpartition(p, -topk)[-topk:] # 返回結果是 array

print("方法2:")

print("indexs={}".format(ind.tolist()))

# preds_ind = p[ind]

# print(preds_ind)

# 方法3:

print("方法3:")

inds = np.argsort(p)[-topk:]

print("indexs={}".format(inds.tolist()))

執行結果:

方法1:

indexs=[1, 5]

pro values=[0.2 0.5]

方法2:

indexs=[1, 5]

方法3:

indexs=[1, 5]

python獲取list下標及其值

當在python中遍歷乙個序列時,我們通常採用如下的方法 for item in sequence process item 如果要取到某個item的位置,可以這樣寫 for index in range len sequence process sequence index 另乙個比較好的方式是使...

python中改變list中list值的問題

l s 0,0,0 for i in range 3 l 1 1 1 print l 如上 定義乙個空list,新增元素也為list型別。本意是想改變list l中乙個值,使其結果為 0,0,0 0,1,0 0,0,0 但執行的結構下圖所示,將list l中的所有元素都改變了。為找到原因,檢視pyt...

從列舉值獲取對應的文字描述

有時列舉值在顯示時,需要顯示列舉值對應的文字串。一種方案是在呼叫的地方使用switch或者if來判斷列舉值,然後賦給不同的文字串,但這樣一來,如果有較多的地方都用到的時候就會比較麻煩。當然有人說,這種情況下,可以針對這種列舉值封裝乙個方法,然後來呼叫。那如果有多個列舉型別都有這樣的需求呢?有沒有什麼...