cách tính khoảng cách euclidian của hai mảng numpy bằng cách phát [trùng lặp]

Aug 16 2020

Tôi muốn tính toán khoảng cách euclidian của hai mảng numpy.

Mỗi hàng trong mảng là một vectơ.

ví dụ

a = np.array([125, 20, 210, 55], [11, 97, 111, 71])
b = np.array([51, 19, 35, 65], [59, 80, 37, 60])

Tôi cần tính khoảng cách euclidian của mỗi hàng trong a với mỗi hàng trong b.

Kích thước thực của mảng có thể lớn tới 5000 hàng và 4000 cột.

Tôi biết cách làm điều đó bằng hai vòng lặp for và một vòng lặp liên tục. Tôi cần giải quyết nó bằng mảng numpy được vectơ hóa. ví dụ: phát một mảng cho một mảng khác nhưhttps://numpy.org/devdocs/user/theory.broadcasting.html

không sử dụng

 spatial.distance.cdist

nhưng, tôi không thể tìm ra cách để làm điều đó.

Bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời

AagamSheth Aug 16 2020 at 13:03
import numpy as np

np.sqrt((np.square(a[:,np.newaxis] - b).sum(axis=2)))