【问题标题】:Keep unique values in an array based on another array while preserving order基于另一个数组在数组中保留唯一值,同时保留顺序
【发布时间】:2017-02-07 10:46:46
【问题描述】:

我有两个数组 my_arrdistances。例如:

my_arr= np.array([0, 1, 3, 4, 5, 3, 5])
distances = np.array([18, 47, 20, 10, 26, 22, 13])

我想根据最小距离得到一个形状为np.unique(my_arr).size 的索引数组。所以在前面的例子中,我会得到:

# indices of my_arr
indices_of_my_arr= np.array([0, 1, 2, 3, 6])

除了for 循环或map 之外,有没有聪明的方法可以做到这一点?

编辑: 另一个例子:

my_arr = np.array([0, 2, 3, 1, 3, 4, 4, 5])
dist = np.array([10, 12, 15, 18, 5, 14, 45, 8])

我希望:

[0, 1, 3, 4, 5, 7]

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您可以使用np.lexsortnp.unique -

    idx = np.lexsort([distances, my_arr])
    out = np.sort(idx[np.unique(my_arr[idx], return_index=1)[1]])
    

    【讨论】:

    • 我添加了另一个示例,因为您的解决方案没有产生预期的数组。
    • @floflo29 必须在那里添加排序。查看编辑。
    猜你喜欢
    • 2021-03-11
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多