Skip to content

Instantly share code, notes, and snippets.

@gwsu2008
Forked from edenau/numpy-argsort.py
Created December 30, 2019 05:17
Show Gist options
  • Save gwsu2008/6e0cfc82a2852b06b5d766c62065b9bb to your computer and use it in GitHub Desktop.
Save gwsu2008/6e0cfc82a2852b06b5d766c62065b9bb to your computer and use it in GitHub Desktop.
score = np.array([70, 60, 50, 10, 90, 40, 80])
name = np.array(['Ada', 'Ben', 'Charlie', 'Danny', 'Eden', 'Fanny', 'George'])
sorted_name = name[np.argsort(score)] # an array of names in ascending order of their scores
print(sorted_name) # ['Danny' 'Fanny' 'Charlie' 'Ben' 'Ada' 'George' 'Eden']
original_name = sorted_name[np.argsort(np.argsort(score))]
print(original_name) # ['Ada' 'Ben' 'Charlie' 'Danny' 'Eden' 'Fanny' 'George']
%timeit name[np.argsort(score)]
# 1.83 µs ± 182 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit sorted(zip(score, name))
# 3.2 µs ± 76.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment