排序数组的索引

时间:2019-08-12 07:32:44

标签: python-3.x numpy

我有一个二维数组,其形状(行,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),
 ]

1 个答案:

答案 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]])