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

Python Numpy获取具有第二大值的行的索引,python,numpy,Python,Numpy,我知道如何使用以下代码段获取包含最大元素的行的索引: np.argmax(np.max(x, axis=0)) 但是,如何获得第二大行的索引?我想我可以切掉一行x,然后再试一次,但是有没有更优雅的解决方案可以缩放到第三大、第四大等?你可以使用np.argsort(np.max(x,axis=0))[-2] 通过将切片索引从-2更改为-index在展开版本上使用argsort,然后使用np.unravel\u index获取行、列索引,可以扩展到您想要的任何索引- row,col = np.un

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

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

但是,如何获得第二大行的索引?我想我可以切掉一行x,然后再试一次,但是有没有更优雅的解决方案可以缩放到第三大、第四大等?你可以使用
np.argsort(np.max(x,axis=0))[-2]


通过将切片索引从
-2
更改为
-index
在展开版本上使用
argsort
,然后使用
np.unravel\u index
获取行、列索引,可以扩展到您想要的任何索引-

row,col = np.unravel_index(np.argsort(x.ravel()),x.shape)
然后,最大的行索引将是
行[-1]
,在
行[-2]
中第二大,依此类推。同样,对于列,使用
col

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

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

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

什么是
x
,一个2d数组?你能准确地定义“最大行”吗?您能提供一个所需输入和输出的数字示例吗?@jpp x是一个3x3数组,但它适用于任何方形数组。最大行是指包含最大值的行。例如,np.array([[0,1,0.],[1,0,5.],[6,4,2.]])在索引2处有其最大值的行。对于您的示例,它不应该是
np.argmax(np.max(x,axis=1))