我有一个二维数组,其形状(行,ncols)包含实数。我想按降序获取对应于Array值的索引(row,col)。检查np.argsort()的文档,似乎它仅返回按特定轴排序的索引。我敢肯定,这应该很简单,但我只是想不通。
例如,如果我有:
[
[1 5 6]
[7 4 9]
[8 2 3]
]
所需的输出将是:
[
(1,2),
(2,0),
(1,0),
(0,2),
(0,1),
(1,1),
(2,2),
(2,1),
(0,0),
]
答案 0 :(得分:1)
这是降序的一种方法-
In [19]: a
Out[19]:
array([[1, 5, 6],
[7, 4, 9],
[8, 2, 3]])
In [20]: np.c_[np.unravel_index(a.ravel().argsort()[::-1],a.shape)]
Out[20]:
array([[1, 2],
[2, 0],
[1, 0],
[0, 2],
[0, 1],
[1, 1],
[2, 2],
[2, 1],
[0, 0]])
对于升序,请跳过翻转部分:[::-1]
。
或带有负值-
In [24]: np.c_[np.unravel_index((-a).ravel().argsort(),a.shape)]
Out[24]:
array([[1, 2],
[2, 0],
[1, 0],
[0, 2],
[0, 1],
[1, 1],
[2, 2],
[2, 1],
[0, 0]])