2017-02-07 22 views
4

2つの配列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]) 

は、これを行うための巧妙な方法は何ですか?

EDIT: 別の例:

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

をあなたのソリューションので、私は別の例を追加しましたyをしない予想される配列を得る。 – floflo29

+1

@ floflo29そこに並べ替えが必要でした。編集をチェックしてください。 – Divakar

関連する問題