我有一个numpy矩阵:
>>> A = np.matrix('1 2 3; 5 1 6; 9 4 2')
>>> A
matrix([[1, 2, 3],
[5, 1, 6],
[9, 4, 2]])
我想得到每行中最大值的索引以及值本身。 我可以使用A.argmax(axis = 1)获得最大值的索引,在这种情况下我会得到:
>>> indices = A.argmax(axis=1)
>>> indices
matrix([[2],
[2],
[0]])
如何使用'indices'数组获取矩阵中每行的最大值数组?有什么方法可以更有效地或在一次操作中做到这一点?是否有一个函数可以返回值及其行和列坐标?
答案 0 :(得分:7)
你可以使用第一维上的索引np.arange(len(A))
(因为你想要每行一个值)和你的索引(压缩),它们对应于第二维上每行的索引:
A[np.arange(len(A)) , indices.squeeze()]
=> matrix([[3, 6, 9]])