由于某些原因,我无法解决此问题。
根据此处的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]
我在这里想念什么?
答案 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