2015-10-10 83 views
-1

最近我碰到argsort(),我想通了,它會返回排序sequence.But的我不清楚指標在一個點上,如果我們都用它來數組排序爲什麼不要簡單地使用sort()。什麼是argsort)的實際應用(

In [77]: import numpy as np 

In [79]: arr = np.array([4,5,1,7,3]) 

In [80]: arr1 = np.sort(arr) 

In [81]: arr1 
Out[81]: array([1, 3, 4, 5, 7]) 

In [84]: arr2 = np.argsort(arr) 

In [85]: arr2 
Out[85]: array([2, 4, 0, 1, 3]) 

argsort比普通排序有什麼好處?我們可以在哪裏使用其返回結果,即排序順序的索引。任何人都有在現實世界中的應用的想法。

回答

0

numpy的,您可以使用索引數組作爲索引到一個數組:

>>> import numpy as np 
>>> arr = np.array([4,5,1,7,3]) 
>>> arr1 = np.sort(arr) 
>>> arr2 = np.argsort(arr) 
>>> arr1 = arr[arr2] 
>>> arr1 = np.sort(arr) 
>>> arr1 == arr[arr2] 
array([ True, True, True, True, True], dtype=bool) 

這可以實現裝飾排序,去除裝飾例行像Python的原生sort功能非常有用不,如果你給它一個key功能 - 例如,通過每個值,而不是值本身的廣場排序你可以:

>>> arr = np.array([4,-5,1,-7,3]) 
>>> arr[np.argsort(arr**2)] 
array([ 1, 3, 4, -5, -7]) 
+0

感謝您的回覆@Ivc ......但什麼是排序通過量的優勢h指數並非直接使用價值。如果我是對的,它會對我們不知道實際數據但仍然有索引的場景有幫助,我們可以對數組進行排序。 –

+0

@abhinavkumar見我答案中的最後一個例子; 'argsort'結合花式索引可以讓你使用一個排序鍵,類似於內建'sort'可以使用'鍵'功能。 – lvc

+0

非常感謝你....感謝解釋@ Ivc –