Hướng dẫn how do you calculate euclidean distance in python? - làm thế nào để bạn tính toán khoảng cách euclidean trong python?
Cải thiện bài viết Lưu bài viết Nói một cách đơn giản, khoảng cách Euclide là ngắn nhất giữa 2 điểm bất kể kích thước. Trong bài viết này để tìm khoảng cách Euclide, chúng tôi sẽ sử dụng thư viện Numpy. Thư viện này được sử dụng để điều khiển mảng đa chiều một cách rất hiệu quả. Hãy để thảo luận về một vài cách để tìm khoảng cách Euclide của Thư viện Numpy. Phương pháp số 1: Sử dụng linalg.norm () & nbsp; Python32.236067977499791 2.236067977499792 2.236067977499793 2.236067977499794 2.236067977499795 2.236067977499796 2.236067977499797 2.236067977499798 2.236067977499797 0 1 22.236067977499794 2.236067977499795 2.236067977499796 2.236067977499797 2.236067977499796 2.236067977499797 2.236067977499796 1 12.236067977499794 3 4 5 6 7Output: 2.23606797749979 Phương pháp số 2: Sử dụng dot () & nbsp; Python32.236067977499791 2.236067977499792 2.236067977499793 2.236067977499794 2.236067977499795 2.236067977499796 2.236067977499797 2.236067977499798 2.236067977499797 0 1 22.236067977499794 2.236067977499795 2.236067977499796 2.236067977499797 2.236067977499796 2.236067977499797 2.236067977499796 1 12.236067977499794 3 4 5Phương pháp số 2: Sử dụng dot () & nbsp; 6 7Output: 2.23606797749979
Python32.236067977499791 2.236067977499792 2.236067977499793 2.236067977499794 2.236067977499795 2.236067977499796 2.236067977499797 2.236067977499798 2.236067977499797 0 1 22.236067977499794 2.236067977499795 2.236067977499796 2.236067977499797 2.236067977499796 2.236067977499797 2.236067977499796 1 12.236067977499794 3 4 5 6 7Output: 2.23606797749979 Tôi muốn giải thích về câu trả lời đơn giản với các ghi chú hiệu suất khác nhau. np.linalg.norm có lẽ sẽ làm nhiều hơn bạn cần:
Đầu tiên - chức năng này được thiết kế để hoạt động qua danh sách và trả về tất cả các giá trị, ví dụ: Để so sánh khoảng cách từ 2.2360679774997907 với tập hợp các điểm 2.2360679774997908:
Hãy nhớ một số điều:
Vì thế
không phải là ngây thơ như vẻ ngoài của nó.
Đầu tiên - mỗi khi chúng tôi gọi nó, chúng tôi phải tìm kiếm "NP" toàn cầu, một bộ tra cứu phạm vi cho "Linalg" và tìm kiếm một phạm vi cho "định mức", và chi phí đơn thuần gọi chức năng có thể tương đương với hàng chục Python hướng dẫn. Cuối cùng, chúng tôi đã lãng phí hai hoạt động để lưu trữ kết quả và tải lại để trả lại ... Pass đầu tiên khi cải tiến: Tra cứu nhanh hơn, bỏ qua cửa hàng
Chúng tôi nhận được sự hợp lý hơn nhiều:
Mặc dù vậy, các cuộc gọi trên đầu vẫn là một số công việc. Và bạn sẽ muốn thực hiện các điểm chuẩn để xác định xem bạn có thể tự mình làm toán tốt hơn không:
Trên một số nền tảng, 2.2360679774997909 nhanh hơn 2.2360679774997910. Số dặm của bạn có thể khác nhau. **** Ghi chú hiệu suất nâng cao. Tại sao bạn tính khoảng cách? Nếu mục đích duy nhất là hiển thị nó, 2.236067977499790 di chuyển theo. Nhưng nếu bạn đang so sánh khoảng cách, kiểm tra phạm vi, v.v., tôi muốn thêm một số quan sát hiệu suất hữu ích. Hãy để Lừa lấy hai trường hợp: Sắp xếp theo khoảng cách hoặc loại bỏ danh sách đến các mục đáp ứng hạn chế phạm vi. 2.236067977499791 Điều đầu tiên chúng ta cần nhớ là chúng ta đang sử dụng Pythagoras để tính khoảng cách ( 2.2360679774997911) vì vậy chúng ta thực hiện rất nhiều cuộc gọi 2.2360679774997912. Toán 101: 2.236067977499792 Nói tóm lại: Cho đến khi chúng tôi thực sự yêu cầu khoảng cách trong một đơn vị x thay vì x^2, chúng tôi có thể loại bỏ phần khó nhất của các tính toán. 2.236067977499793 Tuyệt vời, cả hai chức năng không có bất kỳ rễ vuông đắt tiền nào. Điều đó sẽ nhanh hơn nhiều, nhưng trước khi bạn đi xa hơn, hãy tự mình kiểm tra: Tại sao sort_things_by_distance cần từ chối trách nhiệm "ngây thơ" cả hai lần ở trên? Trả lời ở phía dưới (*A1). Chúng ta có thể cải thiện in_range bằng cách chuyển đổi nó thành một trình tạo: 2.236067977499794 Điều này đặc biệt có lợi ích nếu bạn đang làm một cái gì đó như: 2.236067977499795 Nhưng nếu điều tiếp theo bạn sẽ làm đòi hỏi một khoảng cách, 2.236067977499796 Xem xét các bộ dữ liệu năng suất: 2.236067977499797 Điều này có thể đặc biệt hữu ích nếu bạn có thể kiểm tra phạm vi ('Tìm những thứ gần X và trong NM của Y', vì bạn không phải tính toán khoảng cách nữa). Nhưng nếu chúng ta đang tìm kiếm một danh sách thực sự lớn của 2.2360679774997913 và chúng ta dự đoán rất nhiều trong số họ không được xem xét? Thực sự có một tối ưu hóa rất đơn giản: 2.236067977499798 Liệu điều này có hữu ích hay không sẽ phụ thuộc vào kích thước của 'những thứ'. 2.236067977499799 Và một lần nữa, hãy xem xét năng suất dist_sq. Ví dụ hotdog của chúng tôi sau đó trở thành: 2.236067977499790 . Khoảng cách Euclide ở Python ở đâu mà không bị numpy?Phương pháp chung mà không sử dụng numpy: sqrs = (point1 [0] - point2 [0]) ** 2 + (point1 [1] - point2 [1]) ** 2 + (point1 [2] - point2 [2])**2.euc_dist = math.sqrt (sqrs) in ("Khoảng cách euclidian giữa điểm1 và điểm2:", euc_dist)sqrs = (point1 [0] - point2 [0])**2 + (point1[1] - point2[1])**2 + (point1[2] - point2[2])**2. euc_dist = math. sqrt (sqrs) print ("Euclidian distance between point1 and point2: ", euc_dist)
Làm thế nào để tính toán khoảng cách?Trong phương pháp này, trước tiên chúng tôi khởi tạo hai mảng numpy.Sau đó, chúng tôi lấy sự khác biệt của hai mảng, tính toán sản phẩm chấm của kết quả và chuyển đổi kết quả.Sau đó, chúng tôi lấy căn bậc hai của câu trả lời.Đây là một cách khác để thực hiện khoảng cách Euclide. |