在保留顺序的同时,在基于另一个数组的数组中保留唯一值

时间:2017-02-07 10:46:47

标签: python numpy

我有两个数组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]

1 个答案:

答案 0 :(得分:3)

您可以使用np.lexsortnp.unique -

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