2017-02-07 1 views
4

두 배열 my_arrdistances이 있습니다. 예를 들어순서를 유지하면서 다른 배열을 기반으로 배열에 고유 값 유지

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

I는 그 형상의 최소 거리에 기초 np.unique(my_arr).size 인 인덱스 배열을 얻고 자하는 것이다. 따라서 앞의 예에서, 내가 얻을 것 : for 루프 또는 map 제외

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

이 할 수있는 영리한 방법이?

는 편집 : 는 또 다른 예 :

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] 

답변

3

사용할 수 np.lexsortnp.unique - 솔루션 때문에 나는 또 다른 예를 추가 한

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

~하지 않는다 예상되는 배열을 채 웁니다. – floflo29

+1

@ floflo29 거기에 정렬해야했습니다. 편집을 확인하십시오. – Divakar

관련 문제