Làm thế nào để bạn tìm thấy khoảng cách trong python?

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

  1. Khoảng cách hamming
  2. Khoảng cách Euclide
  3. 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.830951894845301
0 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.830951894845301
1 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.830951894845301
2. 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[]

Tùy thuộc vào phiên bản Python của bạn, hãy sử dụng phép toán. dist[] [3. 8+] để tính khoảng cách giữa hai điểm

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.830951894845301
4 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.830951894845301
5 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.830951894845301
6, 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.071068
3

Chúng ta có thể thấy ở đây rằng chúng ta

  1. Lặp lại qua từng tọa độ điểm và tìm sự khác biệt
  2. Sau đó, chúng tôi bình phương những khác biệt này và cộng chúng lại
  3. 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.830951894845301
1 để 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.071068
6

Hãy xem những gì chúng tôi đã làm ở đây

  1. 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
  2. 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ố
  3. Sau đó, chúng tôi biến cả hai điểm thành các mảng có nhiều mảng
  4. 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
  5. 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.071068
9

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.830951894845301
1 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.071068
61 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.830951894845301
0. 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.071068
63, đượ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.071068
63. 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.071068
63 đ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.071068
66

Hàm

Enter x1: 4
Enter y1: 8
Enter x2: 5
Enter y2: 1
Distance = 7.071068
66 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.071068
68

First Number:  9
Second Number:  14
Hamming Distance:  3
1

Ở đâ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.830951894845301
2 để 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.071068
63 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.830951894845301
2 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.071068
92 từ mô-đun
Enter x1: 4
Enter y1: 8
Enter x2: 5
Enter y2: 1
Distance = 7.071068
93 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:  3
7

Ở đâ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.071068
94 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.071068
66 từ thư viện
Enter x1: 4
Enter y1: 8
Enter x2: 5
Enter y2: 1
Distance = 7.071068
63. 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 Python

Ta thấy hàm

Enter x1: 4
Enter y1: 8
Enter x2: 5
Enter y2: 1
Distance = 7.071068
68 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

Chủ Đề