假设我有一个像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))
最大值是正确的,但位置是错误的。
答案 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])