如何从 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]
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]