[डुप्लिकेट] प्रसारित करके दो संख्यात्मक सरणियों की यूक्लिडियन दूरी की गणना कैसे करें

Aug 16 2020

मैं दो सुन्न सरणियों की यूक्लिडियन दूरी की गणना करना चाहूंगा।

सरणी में प्रत्येक पंक्ति एक वेक्टर है।

जैसे

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

मुझे बी में प्रत्येक पंक्ति के साथ प्रत्येक पंक्ति की यूक्लिडियन दूरी की गणना करने की आवश्यकता है।

सरणी का वास्तविक आकार 5000 पंक्तियों और 4000 स्तंभों के रूप में बड़ा हो सकता है।

मुझे पता है कि यह दो फॉर-लूप और एक फॉर-लूप द्वारा कैसे किया जाता है। मुझे इसे सदिश अंकीय सरणी द्वारा हल करने की आवश्यकता है। उदाहरण के लिए एक सरणी को दूसरे की तरह प्रसारित करेंhttps://numpy.org/devdocs/user/theory.broadcasting.html

बिना उपयोग किए

 spatial.distance.cdist

लेकिन, मैं यह नहीं कर सकता कि यह कैसे करना है।

किसी भी सहायता की सराहना की जाएगी।

जवाब

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

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