亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python 如何在list中找Topk的數值和索引

瀏覽:5日期:2022-06-19 09:19:29
需求:

對于一個python list 或者numpy數組,我需要找到這個list中最大的K個數及其對應的下標。

解決方式:

1. 可以構造字典通過排序解決,不過代碼量較多。

2. 使用heapq庫,可以直接獲取最大值的下標和數值。

import heapqa = [4,2,6,1,9,9] # 獲取下標, 輸出為[4, 5, 2]heapq.nlargest(3, range(len(a)), a.__getitem__) # 獲取數值, 輸出為[9, 9, 6]heapq.nlargest(3,a)

如果要取最小的數,使用 nsmallest即可

補充:Python 利用中間值求TopK 算法

算法思想

首先我們要思考,我要做什么?解決什么問題?

TopK問題,找出一組數據中的前K個最大值或者最小值,這個數據是否重復?要做去重處理?

ok 我們明確我們做什么了 ,那介紹的python處理的topK 算法過程是怎么樣的呢?

如果用排序那就沒必要引入topK 了,當數據強大的時候選取TopK 可以省略很多排序的計算,至于有多優化自己去思考下,就比如排列組合的C,A的區別,一個是抽取,一個是抽取并排列…

以下以找出TopK 的最大值為例,最小值的可以自己修改一下下就可以

介紹的算法思想是利用中間值,將數列分為三部分 ,

【比中間值大的列表】,中間值,【比中間值小的列表】

那么我們當比較

【比中間值大的列表】的個數 == k

的時候就可以得出前K個最大值了,因此

重點就是找出這個中間值如何找出中間值

以列表的第一個數開始為中間值,拆分為三部分

if 【比中間值大的列表】的個數 == k:return 中間值 #程序出口,結束。

if 【比中間值大的列表】的個數 < k :

·····繼續在【比中間值小的列表】找

·····K - 【比中間值大的列表】的個數 -1 個數

(為什么要減一,1是前一次的中間值,分的三部分,前部分后部分都沒有包含中間值,因此…)

if 【比中間值大的列表】的個數 > k :

…也就是說比中間值大的列表比K還大,那就在這個列表中繼續找就行

結合代碼和注釋看

如果要找最小值,只需要改一下就ok ,還可以設置一個布爾值的輸入,來做前K個最大值最小值

#2019 11 04#author 半斤地瓜燒#TopK 算法,找出序列中前K個最大值的#輸入一個seq# 輸出以seq[0]為中間值 劃分的三個部分,中間值,比這個值大的seq ,比這個值小的seq,# 即splitNum,theBig,theSmalldef Split_Seq(seq): splitNum = seq[0] seq = seq[1:]#兩個部分都不包含中間值,因此切片去除seq[0] theBig = [x for x in seq if x >= splitNum] theSmall = [x for x in seq if x < splitNum] return splitNum,theBig,theSmall#找出中間值def topKNum(seq,k): splitNum, theBig, theSmall = Split_Seq(seq) theBigLen = len(theBig)if k == theBigLen:return splitNum#出口,返回這個中間值, # 為什么不直接返回thebig?因為存在遞歸的原因thebig 不是在初始的seq找出來的 #需要重新Split,即可,讀者自己思考 # 大值的列表中還未夠K個數的情況, if k > theBigLen:return topKNum(theSmall,k-theBigLen-1) # 大值的列表中大于K個數的情況 return topKNum(theBig,k)#由中間值找出TopK個值,<list>def getTopK(seq,k):return [i for i in seq if i > topKNum(seq, k)]if __name__ == ’__main__’: alist = [7, 3, 5, 1,885,234,2211,222,22, 2, 11, 2, 115] print('===為了驗證,引入排序觀看===', sorted(alist,reverse= True)) print(getTopK(alist, 3))

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲国产爱久久全部精品 | 精品国产成人系列 | 一级一毛片a级毛片欧美 | 妞干网免费视频在线观看 | 欧洲黄色网 | 成人人免费夜夜视频观看 | 欧美唯爱网 全黄性播放 | 伊人成伊人成综合网2222 | 91精品国产高清久久久久久 | 成人午夜在线视频 | 人人婷婷色综合五月第四人色阁 | 国产主播一区二区三区 | 国产精品成人亚洲 | 国产一区二区三区高清视频 | 日韩系列在线 | 国产男女视频在线观看 | 欧美在线视频网站 | 亚洲色图综合网 | 中文色 | 日韩人成 | 黄色a大片| 性短视频在线观看免费不卡流畅 | 女人被狂躁视频免费网站 | 亚洲 欧美 手机 在线观看 | 国产日韩中文字幕 | 大杳蕉伊人狼人久久一本线 | 中文无码久久精品 | 欧美日韩在线一区二区三区 | 寡妇一级a毛片免费播放 | 中文字幕日本不卡一二三区 | 久久er国产精品免费观看1 | 国产一级黄色影片 | 小泽玛利亚一区二区 | 亚洲欧美日韩在线 | 九九爱国产 | 欧美一级爆毛片 | 国产免费看网站v片不遮挡 国产免费高清 | 在线看国产 | 一本大道无香蕉综合在线 | 乱爱性全过程免费视频 | 福利在线一区二区 |