如何从矩阵的每一行获得最大值和位置

时间:2018-06-10 08:11:17

标签: python numpy

假设我有一个像A=np.array([[1,2,3],[5,2,6],[7,1,5]])

这样的矩阵

然后,我想从每一行中选择最大值和位置。

结果应为Value = [3,6,7],Position = [2,2,0]。

在Matlab中,代码[Value,Position]=max(A);可以计算出正确的答案

但我需要将其更改为Python代码。

我曾经尝试过这样的代码

Value=np.max(A, axis=1)
Position=np.where(A==np.max(A,axis=1)) 

Result:
Value=array([3, 6, 7])
Position=(array([], dtype=int32), array([], dtype=int32))

最大值是正确的,但位置是错误的。

1 个答案:

答案 0 :(得分:1)

argmax开始,然后使用结果将您的数据编入索引。

idx = A.argmax(axis=1)
val = A[np.arange(len(A)), idx]

idx
array([2, 2, 0])    

val
array([3, 6, 7])