Saya terkejut pertanyaan khusus ini belum pernah ditanyakan sebelumnya, tetapi saya benar-benar tidak menemukannya di SO atau di dokumentasi np.sort
.
Katakanlah saya memiliki bilangan bulat numpy array acak, misalnya:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Jika saya mengurutkannya, saya mendapatkan urutan naik secara default:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
tetapi saya ingin solusinya diurutkan dalam urutan menurun .
Sekarang, saya tahu saya selalu bisa melakukan:
reverse_order = np.sort(temp)[::-1]
tetapi apakah pernyataan terakhir ini efisien ? Bukankah itu membuat salinan dalam urutan naik, dan kemudian membalik salinan ini untuk mendapatkan hasil dalam urutan terbalik? Jika memang demikian, apakah ada alternatif yang efisien? Ini tidak terlihat seperti np.sort
menerima parameter untuk mengubah tanda perbandingan dalam operasi pengurutan untuk mendapatkan segala sesuatunya dalam urutan terbalik.
temp[::-1].sort()
mengetahui bahwa ia harus mengurutkan dalam urutan terbalik ?? Cara saya membacanya adalah: membalikkan larik aslinya, lalu mengurutkannya (dalam urutan menaik). Mengapa membalikkan larik asli (datang dalam urutan acak) dan kemudian mengurutkannya dalam urutan menaik mengembalikan larik dalam urutan terbalik?