我知道如何使用此代码段获取包含最大元素的行的索引:
np.argmax(np.max(x, axis=0))
Run Code Online (Sandbox Code Playgroud)
但是,如何获得第二大行的索引?我想我可以切断一行 x 然后再试一次,但是有没有更优雅的解决方案可以针对第三大、第四等进行缩放?
在扁平化版本上使用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],依此类推。