Mảng 2D khoảng cách Python Manhattan
Trong hướng dẫn này, chúng ta sẽ xem xét cách tính khoảng cách Manhattan giữa hai điểm trong Python với sự trợ giúp của một số ví dụ Show
Khoảng cách Manhattan là gì?Khoảng cách Manhattan (còn gọi là khoảng cách taxi) là tổng hiệu tuyệt đối giữa tọa độ của hai điểm. Hình ảnh sau đây minh họa việc tính toán khoảng cách Manhattan giữa các điểm A và B Bạn có thể thấy rằng chúng tôi đang tính khoảng cách giữa hai điểm bằng cách di chuyển từ điểm A (1, 1) đến B (4, 3) (hoặc ngược lại) dọc theo các trục vuông góc Công thức của khoảng cách ManhattanĐể tính khoảng cách Manhattan giữa các điểm (x1, y1) và (x2, y2), bạn có thể sử dụng công thức Ví dụ: khoảng cách giữa các điểm (1, 1) và (4, 3) là 5. Công thức trên có thể được tổng quát hóa thành n chiều Tính toán khoảng cách Manhattan trong PythonCó một số cách để tính khoảng cách Manhattan trong Python. Ví dụ: bạn có thể viết hàm tùy chỉnh của riêng mình hoặc sử dụng các phương thức có sẵn từ các thư viện như scipy. Hãy xem xét chúng với sự trợ giúp của các ví dụ 1. Chức năng tùy chỉnh trong PythonTrước khi chúng ta tiến hành các phương pháp có sẵn, hãy viết một hàm để lấy khoảng cách Manhattan giữa hai điểm với số lượng kích thước bất kỳ (giả sử cả hai điểm có cùng số lượng kích thước) def get_manhattan_distance(p, q): """ Return the manhattan distance between points p and q assuming both to have the same number of dimensions """ # sum of absolute difference between coordinates distance = 0 for p_i,q_i in zip(p,q): distance += abs(p_i - q_i) return distance # check the function a = (1, 1) b = (4, 3) # distance b/w a and b d = get_manhattan_distance(a, b) # display the result print(d) đầu ra 5 Bạn có thể thấy rằng chúng tôi nhận được kết quả chính xác cho các điểm (1,1) và (4,3). Chức năng trên cũng hoạt động đối với các điểm có nhiều hơn 2 chiều. Ví dụ: hãy lấy khoảng cách giữa các điểm (1, 0, 2, 3) và (4, 4, 3, 1) # check the function a = (1, 0, 2, 3) b = (4, 4, 3, 1) # distance b/w a and b d = get_manhattan_distance(a, b) # display the result print(d) đầu ra 10 Chúng tôi nhận được 10 như đầu ra. Nếu chúng ta sử dụng công thức trên, chúng ta sẽ nhận được kết quả tương tự Lưu ý rằng việc triển khai ở trên có thể được cải thiện hơn nữa bằng cách sử dụng các hoạt động được véc tơ hóa với sự trợ giúp của các mảng có nhiều mảng để tính toán sự khác biệt một cách hiệu quả 2. Khoảng cách Manhattan bằng Thư viện scipyThư viện from scipy.spatial import distance # two points a = (1, 0, 2, 3) b = (4, 4, 3, 1) # mahattan distance b/w a and b d = distance.cityblock(a, b) # display the result print(d) đầu ra 10 Ta được kết quả tương tự như trên. Để biết thêm về chức năng này, hãy tham khảo Sự khác biệt giữa Khoảng cách Manhattan và Khoảng cách EuclideKhi đề cập đến khoảng cách giữa các điểm, chúng ta thường đề cập đến khoảng cách Euclide giữa chúng, được tính bằng cách lấy căn bậc hai của tổng bình phương hiệu giữa các tọa độ. Mặt khác, ở khoảng cách Manhattan, ta chỉ lấy tổng hiệu tuyệt đối giữa tọa độ của hai điểm Với điều này, chúng ta đi đến phần cuối của hướng dẫn này. Các ví dụ về mã và kết quả được trình bày trong hướng dẫn này đã được triển khai trong Jupyter Notebook với python (phiên bản 3. 8. 3) kernel có gấu trúc phiên bản 1. 0. 5
Tác giả
|