np.argsort文档中的示例

时间:2018-06-27 03:50:21

标签: sorting np

由于某些原因,我无法解决此问题。

根据此处的1维数组示例, https://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html

x = np.array([3, 1, 2])
np.argsort(x)
  

array([1,2,0])

我自己尝试过。但默认情况下,返回结果应为升序..含义

x([result])

返回

  

array([1,2,3])

因此,结果不应为[2,0,1]

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

在文档中,第一行指出“返回将对数组进行排序的索引”。因此,如果您想要排序后的值的位置,我们就有:

x = np.array([3, 1, 2])
np.argsort(x)
>>>array([1, 2, 0])

在这里我们希望x的索引位置为1、2和3。 3的位置为0,1的位置为1,而2的位置为2,因此array([1, 2, 0]) = sorted_array(1,2,3)。

从注释中再次得出,“ argsort沿给定的轴按排序顺序返回与该索引数据具有相同形状的索引数组。”

一种更直观的方法是使用for循环,在该循环上循环返回的argsort值,然后使用这些值索引初始数组:

x   = np.array([3, 1, 2])
srt_positions = np.argsort(x)

for k in srt_positions:
    print x[k]

>>> 1, 2, 3