我有一个数组,我需要它的索引来排序它。之前的实现在循环中使用了pd.sort_values()
,我想重构它。为此,我需要用argsort
来实现它。
下面是我的尝试:
array = np.array([1., 2., 0., 0., 9., 3., 7., 13., 4., 5., 15., 5., 12., 6., 3.,
1., 1., 5., 1., 9., 15., 2., 4., 7., 16., 7., 8., 11., 15., 13., 4., 16., 11.])
# Just for illustration of what I need as output
print(list(pd.Series(array).sort_values(ascending=False, kind="quicksort").index))
# Out: [31, 24, 20, 28, 10, 7, 29, 12, 32, 27, 4, 19, 26, 6, 23, 25, 13, 11, 9, 17, 8, 22, 30, 14, 5, 1, 21, 0, 18, 15, 16, 3, 2]
# I tried:
print(array.argsort(kind="quicksort")[::-1])
print((-array).argsort(kind='quicksort'))
print(array.argsort(kind='quicksort')[-len(array):][::-1])
# Out: [24 31 20 28 10 29 7 12 32 27 4 19 26 25 6 23 13 9 17 11 8 30 22 14 5 21 1 0 15 18 16 3 2 ]
1条答案
按热度按时间guykilcj1#
必须先恢复数组,然后再更正索引: