溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何獲取numpy的array中前N個(gè)最大值

發(fā)布時(shí)間:2022-02-25 16:13:47 來(lái)源:億速云 閱讀:419 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“如何獲取numpy的array中前N個(gè)最大值”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何獲取numpy的array中前N個(gè)最大值”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

主要應(yīng)用了argsort()函數(shù),函數(shù)原型:

numpy.argsort(a, axis=-1, kind='quicksort', order=None)
'''
Returns the indices that would sort an array.
Perform an indirect sort along the given axis using the algorithm specified by the kind keyword. It returns an array of indices of the same shape as a that index data along the given axis in sorted order.
'''
Parameters: 
a : array_like
Array to sort.
 
axis : int or None, optional
Axis along which to sort. The default is -1 (the last axis). If None, the flattened array is used.
 
kind : {‘quicksort', ‘mergesort', ‘heapsort', ‘stable'}, optional
Sorting algorithm.
 
order : str or list of str, optional
When a is an array with fields defined, this argument specifies which fields to compare first, second, etc. A single field can be specified as a string, and not all fields need be specified, but unspecified fields will still be used, in the order in which they come up in the dtype, to break ties.
 
Returns: 
index_array : ndarray, int
Array of indices that sort a along the specified axis. If a is one-dimensional, a[index_array] yields a sorted a. More generally, np.take_along_axis(a, index_array, axis=a) always yields the sorted a, irrespective of dimensionality.

示例:

import numpy as np
top_k=3
arr = np.array([1, 3, 2, 4, 5])
top_k_idx=arr.argsort()[::-1][0:top_k]
print(top_k_idx)
#[4 3 1]

補(bǔ)充:python topN / topK 取 最大的N個(gè)數(shù) 或 最小的N個(gè)數(shù)

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

print結(jié)果[0 4 2 1 3]

說(shuō)明a[0]最小,a[3]最大

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

補(bǔ)充:利用Python獲取數(shù)組或列表中最大的N個(gè)數(shù)及其索引

看代碼吧~

import heapq
 
a=[43,5,65,4,5,8,87]
re1 = heapq.nlargest(3, a) #求最大的三個(gè)元素,并排序
re2 = map(a.index, heapq.nlargest(3, a)) #求最大的三個(gè)索引    nsmallest與nlargest相反,求最小
print(re1)
print(list(re2)) #因?yàn)閞e2由map()生成的不是list,直接print不出來(lái),添加list()就行了

結(jié)果:

re1:[87, 65, 43]

re2:[6, 2, 0]

讀到這里,這篇“如何獲取numpy的array中前N個(gè)最大值”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI