NumPy 2D数组的最大值/最大值索引

7

我有一个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'数组来获取矩阵每一行的最大值数组?有没有更高效或者一次性完成的方法可以实现这个功能?是否有一个函数可以返回值及其所在行列的坐标?


1个回答

9

您可以使用索引np.arange(len(A))在第一维上对美化索引进行操作(因为您希望每行有一个值),并在第二维上使用相应于每行索引的压缩索引,即您的索引:

A[np.arange(len(A)) , indices.squeeze()]
=> matrix([[3, 6, 9]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接