我有一个如下所示的 numpy 数组
values = [0.1, 0.9, 0.8, 0.65, 0.2, 0.7]
我需要知道最高值的值和索引,我可以通过...
int(np.argmax(values))
max(values)
...但是我还需要知道数组中的第二高值和第三高值并相应地保留索引。如何修改代码来获取这些值?
您可以使用
np.argsort
,它为您提供最大数字的索引。
indices = np.argsort(values)[::-1]
print(indices)
[::-1]
反转列表,这是必要的,因为 argsort
按升序返回索引。这给出:
[1, 2, 5, 3, 4, 0]
然后就可以使用了
values[indices[n]]
检索第
n
个最大值。
只需删除最高值,然后使用
int(np.argmax(values))
np.argsort(values)
退货
array([0, 4, 3, 5, 2, 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 - 使用 numpy,如 piripiri 所解释:
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]])