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

时间:2019-02-02 17:31:36

标签: python numpy

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

np.argmax(np.max(x, axis=0))

但是,如何获得第二大行的索引?我认为我可以剪掉x的行然后再试一次,但是对此有没有更优雅的解决方案,可以扩展到第3个,第4个等?

2 个答案:

答案 0 :(得分:1)

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

这可以通过将切片索引从-2更改为-index来缩放到所需的任何索引。

答案 1 :(得分:1)

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

row,col = np.unravel_index(np.argsort(x.ravel()),x.shape)

然后,最大的行索引将是row[-1],在row[-2]中排第二,依此类推。同样,对于列,请使用col

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

row,col = row[::-1],col[::-1]

然后,最大的将是[0],第二大的将是[1],依此类推。