Chương trình python này tính toán khoảng cách giữa hai điểm hoặc tọa độ do người dùng cung cấp bằng công thức khoảng cách
Chương trình này sử dụng công thức sau cho khoảng cách giữa hai điểm
Công Thức Khoảng Cách = [ [x2 - x1]2 + [y2 - y1]2 ]½
Ở đâu. [x1, y1] = tọa độ của điểm thứ nhất & [x2, y2] = tọa độ của điểm thứ hai
Mã nguồn Python. Máy tính khoảng cách
# Python Program to Calculate Distance
# Reading co-ordinates
x1 = float[input['Enter x1: ']]
y1 = float[input['Enter y1: ']]
x2 = float[input['Enter x2: ']]
y2 = float[input['Enter y2: ']]
# Calculating distance
d = [ [x2-x1]**2 + [y2-y1]**2 ] ** 0.5
# Displaying result
print['Distance = %f' %[d]]
Đầu ra máy tính khoảng cách Python
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.071068
chào bạn. Hôm nay chúng ta sẽ học cách tính khoảng cách trong ngôn ngữ lập trình python. Trong hướng dẫn này, chúng tôi sẽ tính toán các khoảng cách sau
- Khoảng cách hamming
- Khoảng cách Euclide
- Khoảng cách Manhattan
Chúng ta sẽ xem xét các công thức cho từng phép tính khoảng cách và sau đó tìm hiểu cách tính tương tự với sự trợ giúp của mã python
Cũng đọc. Tính a^n trong Python. Các cách khác nhau để tính toán sức mạnh trong Python
Tính khoảng cách Hamming trong Python
Khoảng cách Hamming được tính giữa hai số nhưng ở định dạng nhị phân. Về cơ bản, nó ngụ ý số bit khác nhau giữa hai số ở định dạng nhị phân
Chẳng hạn, nếu chúng ta chọn các số nhị phân 101 và 111 thì khoảng cách Hamming giữa chúng là 1 vì chúng chỉ khác nhau một chữ số nhị phân
Triển khai khoảng cách Hamming trong Python
Bây giờ để đếm số bit khác nhau, chúng tôi sẽ sử dụng phép toán XOR. XOR chỉ cho kết quả là 1 nếu các bit khác nhau, nếu không thì kết quả là 0. Cuối cùng, chúng tôi sẽ tính toán số bit được đặt trong XOR của hai số
a = int[input[]] b = int[input[]] x = a^b final_ans = 0; while [x > 0]: final_ans += x & 1; x >>= 1; print["First Number: ",a] print["Second Number: ",b] print["Hamming Distance: ",final_ans]
Chúng tôi đã nhập 12 và 9 làm hai đầu vào và khoảng cách hamming là 3 như thể hiện trong kết quả bên dưới
First Number: 9 Second Number: 14 Hamming Distance: 3
Tính khoảng cách Euclide trong Python
Khoảng cách Euclide là khoảng cách giữa hai điểm trong không gian có thể đo được với sự trợ giúp của công thức Pythagore. Công thức được hiển thị dưới đây
Xét các điểm là [x,y,z] và [a,b,c] thì khoảng cách được tính là.
căn bậc hai của [ [x-a]^2 + [y-b]^2 + [z-c]^2 ].
Thực hiện
Để tính Khoảng cách Euclide giữa hai điểm tọa độ, chúng ta sẽ sử dụng mô-đun numpy trong python
import numpy as np p1 = np.array[[1,2,3]] p2 = np.array[[3,2,1]] sq = np.sum[np.square[p1 - p2]] print[np.sqrt[sq]]
Đầu ra của mã được đề cập ở trên là 2. 8284271247461903. Bạn cũng có thể tính toán khoảng cách bằng máy tính thủ công, nó sẽ cho kết quả gần giống nhau
Cũng đọc. Tính khoảng cách giữa các nút trong biểu đồ không trọng số
Tính toán khoảng cách Manhattan trong Python
Khoảng cách Manhattan giữa hai vectơ/mảng [giả sử A và B], được tính bằng Σ. Ai – Bi. trong đó Ai là phần tử thứ i trong mảng thứ nhất và Bi là phần tử thứ i trong mảng thứ hai
Triển khai mã
A = [1,2,3] B = [5,3,2] dis = 0 for i in range[len[A]]: dis += abs[A[i] - B[i]] print["First Array is: ", A] print["Second Array is: ", B] print["Manhattan Distance is: ", dis]
Đầu ra của mã được đề cập ở trên được hiển thị bên dưới
First Array is: [1, 2, 3] Second Array is: [5, 3, 2] Manhattan Distance is: 6
Sự kết luận
Tôi hy vọng bạn hiểu khái niệm và mã logic cho tất cả các tính toán khoảng cách được đề cập trong hướng dẫn. Cảm ơn bạn đã đọc hướng dẫn
Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để tính khoảng cách Euclide giữa hai điểm, nghĩa là sử dụng Python để tìm khoảng cách giữa hai điểm. Bạn sẽ học cách tính khoảng cách giữa hai điểm trong hai chiều, cũng như bất kỳ số chiều nào khác
Trước tiên, bạn sẽ học một cách đơn giản để làm điều này, sử dụng
import numpy as np p1 = np.array[[1,2,3]] p2 = np.array[[3,2,1]] sq = np.sum[np.square[p1 - p2]] print[np.sqrt[sq]]2 và
import numpy as np p1 = np.array[[1,2,3]] p2 = np.array[[3,2,1]] sq = np.sum[np.square[p1 - p2]] print[np.sqrt[sq]]3, sau đó sử dụng tích
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453010 của một mảng được chuyển đổi, và cuối cùng, sử dụng
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453011 và
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453012. Bạn sẽ kết thúc phần hướng dẫn bằng cách hiểu được phương pháp nào là nhanh nhất
Bắt đầu nào
Câu trả lời nhanh. Sử dụng khoảng cách của scipy[] hoặc toán học. quận[]
Mục lục
Khoảng cách Euclide giữa hai điểm là gì?
Khoảng cách Euclidian biểu thị khoảng cách ngắn nhất giữa hai điểm. Do đó, nó đại diện cho Khoảng cách Pythagore giữa hai điểm, được tính bằng cách sử dụng
d = √[[x2 – x1]2 + [y2 – y1]2]
Chúng ta có thể dễ dàng tính khoảng cách của các điểm có nhiều hơn hai chiều bằng cách tìm hiệu bình phương giữa các chiều của hai điểm đó.
Khoảng cách Euclide có nhiều công dụng, đặc biệt là trong học máy. Ví dụ, chúng được sử dụng rộng rãi trong các hệ thống phân loại k-láng giềng gần nhất. Do đó, hiểu các cách dễ dàng khác nhau để tính khoảng cách giữa hai điểm trong Python là một kỹ năng hữu ích [và thường cần thiết] để hiểu và học
Để tìm hiểu thêm về khoảng cách Euclidian, hãy xem bài viết hữu ích này trên Wikipedia về nó
Tìm khoảng cách Euclidian giữa hai điểm trong Python bằng Sum và Square
Một cách rất trực quan để sử dụng Python để tìm khoảng cách giữa hai điểm, hoặc khoảng cách euclidian, là sử dụng các hàm
import numpy as np p1 = np.array[[1,2,3]] p2 = np.array[[3,2,1]] sq = np.sum[np.square[p1 - p2]] print[np.sqrt[sq]]2 và
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453014 tích hợp sẵn trong Python
Giả sử chúng ta có hai điểm, nằm ở
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453015 và
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453016, hãy xem cách chúng ta có thể tính khoảng cách euclidian
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.0710683
Chúng ta có thể thấy ở đây rằng chúng ta
- Lặp lại qua từng tọa độ điểm và tìm sự khác biệt
- Sau đó, chúng tôi bình phương những khác biệt này và cộng chúng lại
- Cuối cùng, chúng tôi trả về căn bậc hai của tổng này
Chúng tôi có thể cắt giảm đáng kể mã được sử dụng cho việc này, vì nó cực kỳ dài dòng để giải thích cách tính toán điều này
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.830951894845301
Chúng tôi đã có thể cắt giảm hàm xuống chỉ còn một câu lệnh trả về. Hãy ghi nhớ, không phải lúc nào việc tái cấu trúc mã của bạn thành cách triển khai ngắn nhất có thể cũng là điều lý tưởng. Sẽ tốt hơn nhiều nếu cố gắng đạt được mức độ dễ đọc trong tác phẩm của bạn
Bạn muốn tìm hiểu thêm về cách hiểu danh sách Python?
Trong phần tiếp theo, bạn sẽ học cách sử dụng thư viện
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453011 để tìm khoảng cách giữa hai điểm
Sử dụng Numpy để tìm khoảng cách Euclide
Chúng ta có thể dễ dàng sử dụng các hàm tích hợp sẵn để tạo lại công thức cho khoảng cách Euclide. Hãy xem làm thế nào
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.0710686
Hãy xem những gì chúng tôi đã làm ở đây
- Chúng tôi đã nhập
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.830951894845301
1 và khai báo hai điểm của chúng tôi - Sau đó, chúng tôi đã tạo một hàm
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.830951894845301
9 lấy hai điểm làm tham số - Sau đó, chúng tôi biến cả hai điểm thành các mảng có nhiều mảng
- Chúng tôi đã tính tổng bình phương giữa các chênh lệch cho mỗi trục
- Sau đó chúng tôi lấy căn bậc hai của tổng này và trả về
Nếu bạn muốn sử dụng phương pháp này, nhưng rút ngắn đáng kể chức năng, bạn cũng có thể viết
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.0710689
Trước khi chúng tôi tiếp tục với các thư viện khác, hãy xem cách chúng tôi có thể sử dụng một phương pháp
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453011 khác để tính khoảng cách Euclidian giữa hai điểm
Sử dụng dấu chấm để tìm khoảng cách giữa hai điểm trong Python
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106861 cũng được tích hợp sẵn một hàm cho phép bạn tính tích vô hướng giữa hai vectơ, được đặt tên một cách khéo léo là hàm
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453010. Hãy xem cách chúng ta có thể sử dụng tích vô hướng để tính khoảng cách Euclide trong Python
a = int[input[]] b = int[input[]] x = a^b final_ans = 0; while [x > 0]: final_ans += x & 1; x >>= 1; print["First Number: ",a] print["Second Number: ",b] print["Hamming Distance: ",final_ans]3
Bạn muốn tìm hiểu thêm về cách tính căn bậc hai trong Python?
Một lần nữa, chức năng này là một chút word-y. Chúng tôi chắc chắn có thể cắt nó xuống rất nhiều, như hình dưới đây
a = int[input[]] b = int[input[]] x = a^b final_ans = 0; while [x > 0]: final_ans += x & 1; x >>= 1; print["First Number: ",a] print["Second Number: ",b] print["Hamming Distance: ",final_ans]4
Trong phần tiếp theo, bạn sẽ học cách sử dụng thư viện
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106863, được tích hợp sẵn trong Python, để tính khoảng cách giữa hai điểm
Sử dụng toán học để tìm khoảng cách Euclide giữa hai điểm trong Python
Python được tích hợp sẵn một thư viện tiện dụng để xử lý các tác vụ toán học thông thường, thư viện
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106863. Bởi vì tính toán khoảng cách giữa hai điểm là một nhiệm vụ toán học phổ biến mà bạn sẽ gặp phải, thư viện Python
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106863 đi kèm với một hàm tích hợp có tên là hàm
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106866
Hàm
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106866 nhận hai tham số, hai điểm của bạn và tính khoảng cách giữa các điểm này
Hãy xem cách chúng ta có thể tính khoảng cách Euclidian bằng hàm
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106868
First Number: 9 Second Number: 14 Hamming Distance: 31
Ở đây chúng ta có thể thấy rằng đây là một cách cực kỳ rõ ràng để tính khoảng cách giữa hai điểm trong Python. Tên hàm không chỉ liên quan đến những gì chúng ta đang tính toán mà còn trừu tượng hóa rất nhiều phương trình toán học
Trong phần tiếp theo, bạn sẽ học cách sử dụng thư viện
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453012 để tính khoảng cách giữa hai điểm
Sử dụng Python và scipy để tìm khoảng cách giữa hai điểm
Tương tự như ví dụ về thư viện
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106863 mà bạn đã học ở phần trên, thư viện
# Python Euclidian Distance using Naive Method point_1 = [1,2] point_2 = [4,7] def naive_euclidian_distance[point1, point2]: return sum[[[point1[x] - point2[x]] ** 2 for x in range[len[point1]]]] ** 0.5 print[naive_euclidian_distance[point_1, point_2]] # Returns 5.8309518948453012 cũng đi kèm với một số hàm toán học và khoa học hữu ích được tích hợp trong đó
Hãy sử dụng hàm
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106892 từ mô-đun
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106893 và tìm hiểu cách tính khoảng cách euclidian giữa hai điểm
First Number: 9 Second Number: 14 Hamming Distance: 37
Ở đây chúng ta có thể thấy rằng việc gọi hàm
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106894 thậm chí còn cụ thể hơn hàm
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106866 từ thư viện
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106863. Cụ thể có thể giúp người đọc mã của bạn hiểu rõ những gì đang được tính toán mà bạn không cần phải ghi lại bất kỳ điều gì, chẳng hạn như nhận xét
Bây giờ bạn đã học được nhiều cách để tính khoảng cách euclidian giữa hai điểm trong Python, hãy so sánh các phương pháp này để xem cách nào nhanh nhất
Xem một số hướng dẫn Python khác về datagy, bao gồm hướng dẫn đầy đủ của chúng tôi về cách tạo kiểu cho Pandas và tổng quan toàn diện của chúng tôi về Pivot Tables trong Pandas
Phương pháp nhanh nhất để tìm khoảng cách giữa hai điểm trong Python
Trong các phần trước, bạn đã học một số cách khác nhau để tính khoảng cách Euclidian giữa hai điểm trong Python. Trong mỗi phần, chúng tôi đã đề cập đến cách làm cho mã dễ đọc hơn và nhận xét về mức độ rõ ràng của lệnh gọi hàm thực tế.
Hãy cùng xem các phương pháp này mất bao lâu, trong trường hợp bạn đang tính toán khoảng cách giữa các điểm cho hàng triệu điểm và yêu cầu hiệu suất tối ưu
Mỗi phương thức được chạy 7 lần, lặp lại ít nhất 10.000 lần mỗi lần gọi hàm
MethodTime to ExecuteNaive Method162 µsNumpy68 µsNumpy [dot]64 µsMath. quận2. 47 µsscipy. khoảng cách71. 5 µsSo sánh thời gian thực hiện để tính khoảng cách Euclide trong PythonTa thấy hàm
Enter x1: 4 Enter y1: 8 Enter x2: 5 Enter y2: 1 Distance = 7.07106868 là nhanh nhất. Vấn đề duy nhất ở đây là chức năng này chỉ khả dụng trong Python 3. 8 trở về sau
Sự kết luận
Trong bài đăng này, bạn đã học cách sử dụng Python để tính khoảng cách Euclide giữa hai điểm. Khoảng cách Euclidian đo khoảng cách ngắn nhất giữa hai điểm và có nhiều ứng dụng học máy. Bạn đã tìm hiểu cách tính toán điều này bằng một phương pháp ngây thơ, hai phương pháp sử dụng numpy, cũng như các phương pháp sử dụng thư viện toán học và scipy