问题

在对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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐