Tôi ngạc nhiên vì câu hỏi cụ thể này chưa từng được hỏi trước đây, nhưng tôi thực sự không tìm thấy nó trên SO cũng như trên tài liệu của np.sort
.
Giả sử tôi có một mảng numpy ngẫu nhiên chứa các số nguyên, ví dụ:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Nếu tôi sắp xếp nó, tôi nhận được thứ tự tăng dần theo mặc định:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
nhưng tôi muốn giải pháp được sắp xếp theo thứ tự giảm dần .
Bây giờ, tôi biết tôi luôn có thể làm:
reverse_order = np.sort(temp)[::-1]
nhưng câu lệnh cuối cùng này có hiệu quả không? Nó không tạo một bản sao theo thứ tự tăng dần, và sau đó đảo ngược bản sao này để nhận được kết quả theo thứ tự đảo ngược? Nếu điều này thực sự xảy ra, có một giải pháp thay thế hiệu quả không? Nó không giống như np.sort
chấp nhận các tham số để thay đổi dấu hiệu của các phép so sánh trong thao tác sắp xếp để đưa mọi thứ theo thứ tự ngược lại.
temp[::-1].sort()
biết rằng nó phải sắp xếp theo thứ tự ngược lại ?? Cách tôi đọc nó là: đảo ngược mảng ban đầu, và sau đó sắp xếp nó (theo thứ tự tăng dần). Tại sao việc đảo ngược mảng ban đầu (sắp xếp theo thứ tự ngẫu nhiên) và sau đó sắp xếp nó theo thứ tự tăng dần lại trả về mảng theo thứ tự đảo ngược?