Tôi có một mảng a = [1, 2, 3, 4, 5, 6]
và b = [1, 3, 5]
và tôi muốn để lập bản đồ a
như vậy mà cho mọi phần tử trong a
đó là giữa một phần tử trong b
nó sẽ được ánh xạ tới các chỉ số b
đó là phạm vi trên mà a
được chứa trong. Không phải là lời giải thích tốt nhất trong lời nói, nhưng đây là một ví dụPython - dễ dàng cách để "so sánh" bản đồ một mảng để
a = 1 -> 0 because a <= first element of b
a = 2 -> 1 because b[0] < 2 <= b[1] and b[1] = 3
a = 3 -> 1
a = 4 -> 2 because b[1] < 4 <= b[2]
Vì vậy, sản phẩm cuối cùng tôi muốn là f(a, b) = [0, 1, 1, 2, 2, 2]
tôi biết tôi chỉ vòng lặp và có thể giải quyết cho nó nhưng tôi đã tự hỏi nếu có một thông minh, nhanh chóng (vectorized) cách để làm điều này trong gấu trúc/NumPy
có những mảng luôn ra lệnh? – taras
Có, bạn có thể cho rằng chúng được đặt hàng.Cũng có thể giả định rằng mọi phần tử của b được chứa trong một (một giải pháp tổng quát hơn mà không có ràng buộc này sẽ là tuyệt vời, nhưng tôi nghĩ nó làm cho nó dễ dàng hơn) – Michael