Tôi đang cố gắng sử dụng arpgpartition từ gumpy, nhưng có vẻ như có điều gì đó sai và tôi dường như không thể tìm ra. Đây là những gì đang xảy ra:Không thể hiểu được kết quả đầu ra có phần khó khăn
Đây là 5 yếu tố đầu tiên của mảng được sắp xếp norms
np.sort(norms)[:5]
array([ 53.64759445, 54.91434479, 60.11617279, 64.09630585, 64.75318909], dtype=float32)
Nhưng khi tôi sử dụng
norms[indices_sorted]
array([ 60.11617279, 64.09630585, 53.64759445, 54.91434479, 64.75318909], dtype=float32)
Khi tôi nghĩ mình sẽ nhận được kết quả tương tự như sắp xếp mảng?
Nó hoạt động tốt khi tôi sử dụng 3 như tham số indices_sorted = np.argpartition(norms, 3)[:3]
norms[indices_sorted]
array([ 53.64759445, 54.91434479, 60.11617279], dtype=float32)
này không làm cho nhiều ý nghĩa với tôi, hy vọng ai đó có thể cung cấp một số cái nhìn sâu sắc?
EDIT: Rephrasing câu hỏi này cho dù argpartition bảo tồn thứ tự của các phần tử phân đoạn k có ý nghĩa hơn.
"Khi tôi nghĩ rằng tôi sẽ nhận được kết quả tương tự như mảng được sắp xếp?" - không, đó không phải là cách mà 'lập luận' hoạt động chút nào. Đọc lại [docs] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.argpartition.html). 'argpartition' không hứa hẹn về thứ tự của các phần tử trong một phân vùng. – user2357112
"Theo thứ tự phân vùng" của tài liệu có thể hơi khó hiểu. 'argpartition' và' partition' chỉ phân chia toán hạng thành phần tử k dưới cùng và phần còn lại. Làm thế nào các nhóm cá nhân được đặt hàng là không xác định. Nếu không, các hàm này không thể làm việc với O (n) được bảo đảm. –
Vì vậy, tôi đoán sử dụng 'argsort' trên' argpartiton' để thực hiện nhiệm vụ tương tự sẽ chỉ chậm hơn, nhưng lệnh đó sẽ được đảm bảo? – rookie