如何从 python 中的 numpy 数组中获取前 5 个最大值?

How to get first 5 maximum values from numpy array in python?

x = np.array([3, 4, 2, 1, 7, 8, 6, 5, 9])

我想得到 array([9,8,7,6,5]) 及其索引 array([8,5,4,6,7]) 的答案。

我试过 np.amax 只提供一个值。

您可以使用 np.argsort 来获取排序后的索引。任何通过做 -x 你可以按降序得到它们:

indices = np.argsort(-x)

您可以通过以下方式获取数字:

sorted_values = x[indices]

然后您可以通过以下方式获得前 5 名的部分:

top5 = sorted_values[:5]

您可以这样做(为清楚起见,对每个步骤都进行了注释):

import numpy as np
x = np.array([3, 4, 2, 1, 7, 8, 6, 5, 9])

y = x.copy() # <----optional, create a copy of the array
y = np.sort(x) # sort array
y = y[::-1] # reverse sort order
y = y[0:5] # take a slice of the first 5
print(y)```

The result:

[9 8 7 6 5]