Numpy 获取具有第二大值的行的索引

Par*_*dox 7 python numpy

我知道如何使用此代码段获取包含最大元素的行的索引:

np.argmax(np.max(x, axis=0))
Run Code Online (Sandbox Code Playgroud)

但是,如何获得第二大行的索引?我想我可以切断一行 x 然后再试一次,但是有没有更优雅的解决方案可以针对第三大、第四等进行缩放?

dan*_*gom 8

您可以使用np.argsort(np.max(x, axis=0))[-2].

这秤任何索引你想通过改变切片索引-2-index


Div*_*kar 5

在扁平化版本上使用argsort,然后用于np.unravel_index获取行、列索引 -

row,col = np.unravel_index(np.argsort(x.ravel()),x.shape)
Run Code Online (Sandbox Code Playgroud)

那么,最大的行索引将是row[-1],第二大的行索引是row[-2],依此类推。同样,对于列,使用col.

因此,为了方便起见,您可以翻转元素并使用:

row,col = row[::-1],col[::-1]
Run Code Online (Sandbox Code Playgroud)

那么,最大的将在 处[0],第二大的在 处[1],依此类推。