获取最大值并存储索引的python数组

时间:2018-02-14 10:05:15

标签: python spyder

我有一个数组列表,如:

array([[ 0.39703756,  0.60296244],
       [ 0.47432672,  0.52567328],
       [ 0.9785825 ,  0.0214175 ],
       ..., 
       [ 0.98861711,  0.01138289],
       [ 0.98769643,  0.01230357],
       [ 0.99783641,  0.99783641]]) 

我使用以下代码获取每行的最大值并将其转换为列表:

scores=scores.max(axis=1).astype(float)
scores=scores.tolist() 

我获得每行的最大值,并且能够将其转换为列表。另外,我想知道哪一列是最大的。即第一行的最大值是0.60,它应该说是1,依此类推。但是,我无法做到这一点怎么做呢?

3 个答案:

答案 0 :(得分:1)

您可以使用numpy.argmax,例如:

x = numpy.array([[1, 2, 3], [2, 4, 1]])
numpy.argmax(x, axis=1)

将返回:

array([2, 1])

答案 1 :(得分:1)

使用numpy.argmax功能。这将输出最大值的索引,而不是最大值本身。由于此输出索引,它们将是整数,您不需要.astype(float)

import numpy as np

scores=np.array([[ 0.39703756,  0.60296244],
       [ 0.47432672,  0.52567328],
       [ 0.9785825 ,  0.0214175 ],
       [ 0.98861711,  0.01138289],
       [ 0.98769643,  0.01230357],
       [ 0.99783641,  0.99783641]])

scores_max=scores.max(axis=1).astype(float)
scores_arg=scores.argmax(axis=1)
scores_arg=scores_arg.tolist() 
print(scores_arg)

答案 2 :(得分:1)

对我而言,解决方案与上述类似但略有改变

array([[ 0.39703756,  0.60296244],
       [ 0.47432672,  0.52567328],
       [ 0.9785825 ,  0.0214175 ],
       ..., 
       [ 0.98861711,  0.01138289],
       [ 0.98769643,  0.01230357],
       [ 0.99783641,  0.99783641]])  

scores_arg=scores.argmax(axis=1)
scores_max=scores.max(axis=1).astype(float)
scores_arg=scores_arg.tolist()