我有一个如下的numpy数组
values = [0.1, 0.9, 0.8, 0.65, 0.2, 0.7]
我需要知道值和最高值的索引,然后我就知道了
int(np.argmax(values))
max(values)
但是现在我还需要从数组中知道第二高和第三高的值,并相应地保留索引。如何修改代码以获取这些值?
答案 0 :(得分:3)
您可以使用np.argsort
,它会为您提供最大数字的索引。
indices = np.argsort(values)[::-1]
print(indices)
[::-1]
反转了列表,这是必要的,因为argsort
以递增的顺序返回索引。这给出了:
[1, 2, 5, 3, 4, 0]
然后您就可以使用
values[indices[n]]
检索第n
个最大值。
答案 1 :(得分:1)
只需删除最大值,然后使用int(np.argmax(values))
答案 2 :(得分:1)
np.argsort(values)
返回
array([0, 4, 3, 5, 2, 1])
答案 3 :(得分:1)
方法1-使用python列表:
values = [0.1, 0.9, 0.8, 0.65, 0.2, 0.7]
#Create a copy of the list
vals = values[:]
print(vals)
for i in range(len(vals)):
m = max(vals)
print(i+1,'-',values.index(m),'-',m)
vals.remove(m)
方法2-使用piripiri解释的numpy:
import numpy as np
indices = np.argsort(values)[::-1]
print(indices)
for i in range(len(values)):
print(i+1,'-',indices[i],'-',values[indices[i]])