问题

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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐