@ Steve 's jawabannya sebenarnya adalah cara yang paling elegan untuk melakukannya.
Untuk cara yang "benar" lihat argumen kata kunci pesanan dari numpy.ndarray.sort
Namun, Anda harus melihat array Anda sebagai array dengan bidang (array terstruktur).
Cara "benar" cukup jelek jika Anda awalnya tidak mendefinisikan array dengan bidang ...
Sebagai contoh cepat, untuk mengurutkannya dan mengembalikan salinan:
In [1]: import numpy as np
In [2]: a = np.array([[1,2,3],[4,5,6],[0,0,1]])
In [3]: np.sort(a.view('i8,i8,i8'), order=['f1'], axis=0).view(np.int)
Out[3]:
array([[0, 0, 1],
[1, 2, 3],
[4, 5, 6]])
Untuk mengurutkannya di tempat:
In [6]: a.view('i8,i8,i8').sort(order=['f1'], axis=0) #<-- returns None
In [7]: a
Out[7]:
array([[0, 0, 1],
[1, 2, 3],
[4, 5, 6]])
@ Steve benar-benar adalah cara paling elegan untuk melakukannya, sejauh yang saya tahu ...
Satu-satunya keuntungan dari metode ini adalah bahwa argumen "urutan" adalah daftar bidang untuk memesan pencarian. Misalnya, Anda bisa mengurutkan berdasarkan kolom kedua, lalu kolom ketiga, lalu kolom pertama dengan memasok order = ['f1', 'f2', 'f0'].
np.sort(a, axis=0)
akan menjadi solusi yang memuaskan untuk matriks yang diberikan. Saya menyarankan edit dengan contoh yang lebih baik tetapi ditolak, meskipun sebenarnya pertanyaannya akan jauh lebih jelas. Contohnya harus sepertia = numpy.array([[1, 2, 3], [6, 5, 2], [3, 1, 1]])
dengan keluaran yang diinginkanarray([[3, 1, 1], [1, 2, 3], [6, 5, 2]])