Khoảng cách Euclide trong Python hai danh sách

Trong toán học, khoảng cách Euclide là khoảng cách nhỏ nhất hoặc độ dài giữa hai điểm. Chúng ta có thể tính toán điều này từ tọa độ Descartes của bất kỳ tập hợp điểm đã cho nào bằng cách triển khai Định lý Pythagore. Đó là lý do tại sao khoảng cách Euclide hiếm khi được gọi là khoảng cách Pitago. Trong bài viết này, bạn sẽ tìm hiểu các cách khác nhau để tìm khoảng cách Euclide với việc sử dụng thư viện NumPy

Các cách khác nhau để tính khoảng cách Euclide

Tìm Khoảng cách Euclide bằng chương trình Python giúp dễ dàng và tiết kiệm thời gian. Nhưng có nhiều cách tiếp cận khác nhau mà qua đó người ta có thể tìm thấy Khoảng cách Euclide. Ở đây chúng ta sẽ thảo luận về ba cách tiếp cận khác nhau

Phương pháp 1. Sử dụng phương thức dot[]

Mô-đun NumPy của Python đi kèm với rất nhiều phương thức để thực hiện các phép tính toán học và cartesian khác nhau. Một trong số đó là phương thức dot[]. Nó thực hiện tích vô hướng của hai mảng NumPy. Nếu cả hai mảng 'x' và 'y' đều là mảng hai chiều thì hàm dot[] sẽ thực hiện phép nhân ma trận

Chương trình

import numpy as np
firstPoint = np.array[[2, 4, 6]]
secPoint = np.array[[2, 1, 2]]
leng = firstPoint - secPoint

sumSq = np.dot[leng.T, leng]
print['Euclidean Distance: ',np.sqrt[sumSq]]

đầu ra

Euclidean Distance:  5.0

Giải trình

Ở đây, chúng ta phải nhập mô-đun NumPy với tên bí danh np. Tiếp theo, chúng tôi đã tạo hai mảng NumPy [firstPoint và secPoint] với ba giá trị. Tiếp theo, chúng tôi trừ secPoint khỏi firstPoint và lưu trữ nó trong leng. Tiếp theo, chúng tôi đã sử dụng np. dot[] phương thức và thông qua leng. T [transpose] và leng là hai tham số riêng biệt để thực hiện tích vô hướng

Chúng tôi lưu trữ kết quả của sản phẩm chấm này trong biến sumSq. Cuối cùng, chúng tôi sử dụng np. sqrt[] để tính căn bậc hai của giá trị sumSq và hiển thị giá trị đó bằng hàm print[]

Phương pháp 2. sử dụng linalg. Norm[] Phương thức

linalg. Norm[] là một phương pháp NumPy khác giúp tính toán một trong 8 định mức ma trận riêng biệt hoặc một trong các định mức vectơ vô hạn. Điều này phụ thuộc vào giá trị của tham số ord

Cú pháp là

linalg.norm[x_arr, ord = None, axis = None, keep_dims = False], where
  • x_arr. Nó là một mảng đầu vào
  • lệnh. Viết tắt, vì "thứ tự" được sử dụng để đặt các thứ tự khác nhau của định mức, được đưa ra dưới đây
Không có Frobenius NormfroFrobenius Normnuc nhân Norminfmax[sum[abs[x], axis=1]-infmin[sum[abs[x], axis=1]], v.v.
  • trục. Nếu giá trị trục trở thành một số nguyên, thì chuẩn vectơ sẽ được tính cho trục x. Nếu trục là 2 bộ, trục này sẽ tính toán các chỉ tiêu ma trận của các ma trận cụ thể
  • keep_dims. Nó chỉ chấp nhận một giá trị Boolean. Nếu giá trị trở thành​ true, thì các trục được chuẩn hóa ở trên sẽ bị bỏ lại và dẫn đến các thứ nguyên có kích thước bằng một. Mặt khác, các trục được định mức vẫn còn trong kết quả

Chương trình

import numpy as np
firstPoint = np.array[[2, 4, 6]]
secPoint = np.array[[2, 1, 2]]
leng = np.linalg.norm[firstPoint - secPoint]
print['Euclidean Distance: ',leng]

Giải trình

Tại đây, chúng ta phải nhập mô-đun NumPy có tên bí danh là np. Tiếp theo, chúng tôi đã tạo hai mảng NumPy [firstPoint và secPoint] với ba giá trị bên trong nó. Sau đó, chúng ta phải sử dụng np. linalg. Norm[] và chuyển phép trừ của firstPoint và secPoint bên trong nó làm tham số. Chúng ta phải lưu trữ dữ liệu được tính toán đó vào một tên biến leng. Cuối cùng, chúng ta in biến leng bằng hàm print[]

Phương pháp 3. Sử dụng sum[] và square[] kết hợp

Phương thức sum[] và square[] là hai phương thức thường được sử dụng của mô-đun NumPy. Chúng giúp tổng hợp tất cả các số được truyền trong đó dưới dạng tham số. Một lần nữa, phương thức square[] được sử dụng để bình phương số nằm trong nó làm tham số của nó

Chương trình

import numpy as np
firstPoint = np.array[[2, 4, 6]]
secPoint = np.array[[2, 1, 2]]
sumSq = np.sum[np.square[firstPoint - secPoint]]
print['Euclidean Distance: ',np.sqrt[sumSq]]

Giải trình

Tại đây, chúng tôi phải nhập mô-đun NumPy với tên bí danh np. Tiếp theo, chúng tôi đã tạo hai mảng NumPy [firstPoint và secPoint] với ba giá trị bên trong nó. Sau đó, chúng ta phải sử dụng phương thức sum[] và bên trong nó, chúng ta phải sử dụng phương thức square[] sẽ lấy phép trừ secPoint từ firstPoint và lưu trữ nó trong biến sumSq. Cuối cùng, chúng tôi sử dụng np. sqrt[] để tính căn bậc hai của giá trị sumSq và hiển thị giá trị đó bằng hàm print[]

Phương pháp 4. sử dụng toán học. hàm dist[]

Chúng ta cũng có thể sử dụng mô-đun toán học thay thế cho tất cả các kỹ thuật trên. Mô-đun toán học có hàm dist[] có thể trả về đoạn thẳng nối hai điểm của khoảng cách Euclide

Chương trình

from math import dist
firstPoint = [2, 4, 6]
secPoint = [1, 1, 1]
print['Euclidean Distance: ',dist[firstPoint, secPoint]]

đầu ra

Euclidean Distance:  5.916079783099616

Giải trình

Ở đây chúng ta phải nhập rõ ràng dist từ mô-đun toán học. Sau đó, chúng tôi sẽ tạo hai bộ dữ liệu với ba giá trị khác nhau. Tiếp theo, chúng ta sẽ sử dụng hàm dist[] và truyền vào hai bộ dữ liệu là hai điểm mà sự khác biệt của chúng sẽ cho chúng ta khoảng cách Euclide. Cuối cùng, chúng tôi hiển thị khoảng cách Euclide đó bằng print[]

Phần kết luận

Trong số tất cả những phương pháp này, phương pháp thứ tư là cách đơn giản và hiệu quả nhất để tìm khoảng cách Euclide. Điều này là do, các bộ dữ liệu [được tạo trong kỹ thuật thứ tư] mất ít thời gian hơn [độ phức tạp về thời gian ít hơn] để xử lý. Ngoài ra, mô-đun toán học rất dễ sử dụng. Phương thức hiệu quả nhất tiếp theo là phương thức dot[] [kỹ thuật đầu tiên] và sử dụng mảng NumPy hoạt động nhanh hơn. Tuy nhiên, một số nhà thống kê, nhà phân tích dữ liệu và lập trình viên cũng thích sử dụng kỹ thuật thứ hai và thứ ba.

Làm cách nào để tìm khoảng cách Euclide giữa hai danh sách trong Python?

phương thức dist[] trong Python được sử dụng cho khoảng cách Euclide giữa hai điểm p và q, mỗi điểm được cung cấp dưới dạng một chuỗi tọa độ [hoặc có thể lặp lại]. Hai điểm phải có cùng chiều. Phương pháp này là mới trong Python phiên bản 3. 8. trả lại. khoảng cách Euclide được tính toán giữa các điểm đã cho.

Làm cách nào để tìm khoảng cách Euclide trong Python mà không có numpy?

Phương pháp chung không sử dụng NumPy. sqrs = [điểm1 [0] - điểm2 [0]]**2 + [điểm1[1] - điểm2[1]]**2 + [điểm1[2] - điểm2[2 . . euc_dist = toán học. sqrt[sqrt] print ["Khoảng cách Euclide giữa điểm 1 và điểm 2. ", euc_dist]

Làm cách nào chúng ta có thể tìm khoảng cách Euclide giữa ma trận thứ nhất và ma trận thứ hai bằng cách sử dụng Numpy?

Tùy chọn đầu tiên chúng ta có khi tính toán khoảng cách Euclide là numpy. linalg. hàm định mức[] , dùng để trả về một trong tám định mức ma trận khác nhau. Khoảng cách Euclide thực sự là định mức l2 và theo mặc định, numpy.

Chủ Đề