python topN 取 最大的N个数 或 最小的N个数

import numpy as np 
a = np.array([1,4,3,5,2]) 
b = np.argsort(a) 
print(b)

print结果[0 4 2 1 3] 
说明a[0]最小,a[3]最大

a[0]<a[4]<a[2]<a[1]<a[3]

这里要借助到python的内置模块heapq,其原理是基于堆的,也就是二叉树

import heapq
 
a=[1,2,3,4,5]
re1 = map(a.index, heapq.nlargest(3, a)) #求最大的三个索引    nsmallest与nlargest相反,求最小
re2 = heapq.nlargest(3, a) #求最大的三个元素
print(list(re1)) #因为re1由map()生成的不是list,直接print不出来,添加list()就行了
print(re2) 

输出结果为

[4, 3, 2]
[5, 4, 3]

 

# -*- coding: utf-8 -*-
import heapq

nums = [1, 8, 2, 23, 7, -4, 18, 23, 24, 37, 2]

# 最大的3个数的索引
max_num_index_list = map(nums.index, heapq.nlargest(3, nums))

# 最小的3个数的索引
min_num_index_list = map(nums.index, heapq.nsmallest(3, nums))

print(list(max_num_index_list))
print(list(min_num_index_list))

参考:

https://blog.csdn.net/qq_41973536/article/details/84865595

https://blog.csdn.net/ns2250225/article/details/80118621

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值