perhatikan kode berikut:
a = np.random.random([5,5])
ind = np.argsort(a, sumbu=1)
a_sorted = a[ind]
np.sort(a, sumbu=1)
sekarang a_sorted dan a harus diurutkan di sepanjang sumbu 1. Namun bahkan bentuknya tidak identik lagi. a masih dari (5,5) sedangkan a_sorted adalah (5,5,5). Jika ini adalah perilaku yang dimaksudkan, dapatkah seseorang memberi tahu saya mengapa?
argsort()
berfungsi dengan baik, tetapi pengindeksan tidak bekerja seperti yang Anda harapkan.
http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#advanced -indexing
Coba ini:
a = np.random.random([5,5])
i = np.arange(len(a))[:, np.newaxis]
j = np.argsort(a, axis=1)
a_sorted = a[i, j]
np.sort(a, axis=1)
Saya bingung dengan cara yang sama. Dokumentasi secara khusus menyatakan,
Kembali
index_array : ndarray, int
Array indeks yang mengurutkana
sepanjang sumbu yang ditentukan.
Dengan kata lain,a[index_array]
menghasilkana
diurutkan.
Yang hanya berlaku untuk array 1D. Haruskah dokumentasi diperluas untuk menentukan bahwa ini tidak berlaku untuk array ND?
@lzkelley Ya, tambalan untuk meningkatkan dokumentasi akan sangat diterima.
@shoyer keren, saya akan membuat PR untuk itu dan memperbarui
Akan lebih baik jika ada contoh bagaimana sebenarnya menggunakan output untuk mengurutkan array ND.
Akan lebih baik jika ada solusi yang lebih mudah dibaca daripada a[np.arange(np.shape(a)[0])[:,np.newaxis], np.argsort(a)]
Mungkin @seberg bisa menjadikannya salah satu penambahan fungsi pengindeksannya.
Saya tidak berpikir itu cocok dengan pengindeksan dengan sangat jelas, fungsi pick atau lebih mungkin merupakan kecocokan yang lebih mudah.
+1 untuk fungsi baru.
Bukankah seluruh tujuan dari argsort
(seperti yang ditunjukkan pada sort
) digunakan untuk pengindeksan?
argsort
menyediakan indeks untuk diurutkan di sepanjang sumbu, tetapi sebenarnya menyortir sepanjang sumbu itu menggunakan indeks tampaknya tidak perlu bertele-tele. Kecuali ada cara yang lebih sederhana yang tidak saya ketahui.
fungsi pick atau lebih mungkin merupakan kecocokan yang lebih mudah.
Ini #8708
Komentar yang paling membantu
Akan lebih baik jika ada contoh bagaimana sebenarnya menggunakan output untuk mengurutkan array ND.
Akan lebih baik jika ada solusi yang lebih mudah dibaca daripada
a[np.arange(np.shape(a)[0])[:,np.newaxis], np.argsort(a)]