راه
۶ کیو· متوسطمتوسطPYTHON۴ ثانیه · ۲۵۶ مگابایت

فاصله‌ی دوبه‌دو با پخش (broadcasting)

A ماتریس n×pn \times p و B ماتریس m×pm \times p است. تابع sq_dists(A, B) ماتریس n×mn \times m مربع فاصله‌ی اقلیدسی هر ردیف A تا هر ردیف B را برمی‌گرداند:

Dij=∑k=1p(Aik−Bjk)2D_{ij} = \sum_{k=1}^{p}\big(A_{ik} - B_{jk}\big)^2

بدون هیچ حلقه‌ای: یا با پخش — A[:, None, :] - B[None, :, :] آرایه‌ای n×m×pn \times m \times p می‌سازد — یا با اتحاد ∥a−b∥2=∥a∥2+∥b∥2−2 a⋅b\lVert a - b\rVert^2 = \lVert a\rVert^2 + \lVert b\rVert^2 - 2\,a \cdot b و یک ضرب ماتریسی. همین کد با torch به‌جای np روی GPU هم اجرا می‌شود.

نمونه‌ها

ورودی نمونه ۱
[[[0.35, 0.82], [0.33, -1.3], [0.91, 0.45]], [[-0.54, 0.58], [0.36, 0.29]]]
خروجی نمونه ۱
[[0.8497, 0.281], [4.2913, 2.529], [2.1194, 0.3281]]

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود