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]
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
import numpy as np
np.sqrt((np.square(a[:,np.newaxis] - b).sum(axis=2)))