cara menghitung jarak euclidian dari dua larik numpy dengan menyiarkan [duplikat]

Aug 16 2020

Saya ingin menghitung jarak euclidian dari dua larik numpy.

Setiap baris dalam larik adalah vektor.

misalnya

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

Saya perlu menghitung jarak euclidian dari setiap baris di a dengan setiap baris di b.

Ukuran sebenarnya dari array bisa sebesar 5000 baris dan 4000 kolom.

Saya tahu cara melakukannya dengan dua for-loop dan satu for-loop. Saya harus menyelesaikannya dengan array numpy vektor. misalnya menyiarkan array ke yang lain sepertihttps://numpy.org/devdocs/user/theory.broadcasting.html

tanpa menggunakan

 spatial.distance.cdist

tapi, saya tidak tahu bagaimana melakukannya.

Bantuan apa pun akan dihargai.

Jawaban

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

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