Câu trả lời của @steve thực sự là cách làm thanh lịch nhất.
Đối với cách "chính xác", hãy xem đối số từ khóa thứ tự của numpy.ndarray.sort
Tuy nhiên, bạn sẽ cần xem mảng của mình dưới dạng một mảng với các trường (một mảng có cấu trúc).
Cách "chính xác" khá xấu nếu ban đầu bạn không xác định mảng của mình bằng các trường ...
Ví dụ nhanh, để sắp xếp nó và trả lại một bản sao:
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]])
Để sắp xếp nó tại chỗ:
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 thực sự là cách thanh lịch nhất để làm điều đó, theo như tôi biết ...
Ưu điểm duy nhất của phương thức này là đối số "thứ tự" là danh sách các trường để sắp xếp tìm kiếm theo. Ví dụ: bạn có thể sắp xếp theo cột thứ hai, rồi cột thứ ba, rồi cột thứ nhất bằng cách cung cấp thứ tự = ['f1', 'f2', 'f0'].
np.sort(a, axis=0)
sẽ là một giải pháp thỏa đáng cho ma trận đã cho. Tôi đã đề xuất một chỉnh sửa với một ví dụ tốt hơn nhưng đã bị từ chối, mặc dù thực sự câu hỏi sẽ rõ ràng hơn nhiều. Ví dụ phải giống nhưa = numpy.array([[1, 2, 3], [6, 5, 2], [3, 1, 1]])
với đầu ra mong muốnarray([[3, 1, 1], [1, 2, 3], [6, 5, 2]])