cliffgao的个人博客分享 http://blog.sciencenet.cn/u/cliffgao 兴趣:生物信息学、统计、概率

博文

得到 前n个最大的数

已有 6868 次阅读 2016-10-23 07:50 |个人分类:python|系统分类:科研笔记

得到前n个最大的数


参考:http://stackoverflow.com/questions/6910641/how-to-get-indices-of-n-maximum-values-in-a-numpy-array

https://docs.scipy.org/doc/numpy/reference/generated/numpy.argpartition.html



可以使用numpy 中的 argpartition 函数。该函数在最坏情况下,时间复杂度为线性时间。比argsort更具时间优势。


import numpy as np

a=np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])

# 输出前4个最大值, 但没有排序

ind = np.argpartition(a, -4)[-4:]

### 结果

ind

### 前4个最大值的序号(未排序): array([1, 5, 8, 0])

a[ind]

### 前4个最大值(未排序): array([4, 9, 6, 9])


如果需要排序后的结果, a需要是array类型:

sort_index=ind[np.argsort(a[ind])]

### 输出排序的序号为array([1, 8, 5, 0])

a[sort_index]

### 输出排序后的结果 array([4, 6, 9, 9])



https://blog.sciencenet.cn/blog-468005-1010296.html

上一篇:ppt 常用问题
下一篇:plotmtv 软件
收藏 IP: 132.234.251.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-24 08:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部