||
得到前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])
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 08:58
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社