问题
在对Python数组排序时,希望按照数组元素排列顺序返回大小索引,但是np.argsort()函数(tf.argsort()同理)返回排序后数组的索引,索引值代表的是原数组的索引值,顺序是按照升序或降序排列的,与原始数组不同,无法满足要求。
如:np.argsort([0.7,0.1,0.2])输出为
[1,2,0]
期望输出为
[3,1,2]
解决
def sort(a):
sorted = list(np.sort(a))
indices = list(np.argsort(sorted))
ser = np.zeros_like(a)
for i in range(len(a)):
ser[i] = indices[sorted.index(a[i])]
indices.pop(sorted.index(a[i]))
sorted.remove(a[i])
return ser+1