我有一个包含数值的二维矩阵,我想找到其中前五个最大数值的索引。例如:
matrix([[0.17542851, 0.13199346, 0.01579704, 0.01429822, 0.01302919],
[0.13279703, 0.12444886, 0.04742024, 0.03114371, 0.02623729],
[0.13502306, 0.07815065, 0.07291175, 0.03690815, 0.02163695],
[0.19032505, 0.15853737, 0.05889324, 0.02791679, 0.02699252],
[0.1695696 , 0.14538635, 0.07127667, 0.04997876, 0.02580234]])
我希望获得(0,3), (0,1), (0,4), (3,1), (4,1)
我尝试了许多解决方法,包括np.argmax(), np.argsort(), np.argpartition()
,但都没有好的结果。
>>np.dstack(np.unravel_index(np.argsort(a.ravel(),axis=None), a.shape))
array([[[0, 4],
[0, 3],
[0, 2],
[2, 4],
[4, 4],
[1, 4],
[3, 4],
[3, 3],
[1, 3],
[2, 3],
[1, 2],
[4, 3],
[3, 2],
[4, 2],
[2, 2],
[2, 1],
[1, 1],
[0, 1],
[1, 0],
[2, 0],
[4, 1],
[3, 1],
[4, 0],
[0, 0],
[3, 0]]], dtype=int64)
这个结果毫无意义。请注意,我需要原始索引,不在乎顺序(只想要前5个,任何顺序都可以,但升序会更好)
翻译后:
这个结果没有意义。请注意,我需要原始的索引,不关心它们的顺序(只需要前五个,无论什么顺序,升序会更好)。