我知道如何使用此代码段获取包含最大元素的行的索引:
np.argmax(np.max(x, axis=0))
但是,如何获得第二大行的索引?我认为我可以剪掉x的行然后再试一次,但是对此有没有更优雅的解决方案,可以扩展到第3个,第4个等?
答案 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]
,依此类推。