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))
?