/ / Finden des Abstandes zwischen einer Punktmenge mit scipy.spatial.distance.cdist (X, Y) in Python - Python, Arrays, distance

Finden der Distanz zwischen einer Menge von Punkten mit scipy.spatial.distance.cdist (X, Y) in Python - Python, Arrays, Abstand

Ich habe ein Datenfeld namens A, das ungefähr so ​​aussieht:

array([[0.59, 1.23], [0.89, 1.67], [0.21,0.99]...])

und hat ungefähr 400 Sätze von [x, y] Punkten. Ich möchte den Abstand zwischen jedem Punktsatz in A zu jedem Punktsatz in B ermitteln. Dies ist ein anderes Array, das genauso aussieht wie A, aber nur halb so lang ist (also etwa 200 Sätze von [x, y] Punkten). . Wenn ich also den Abstand zwischen dem q-ten Paar von [x, y] -Werten in B gegen alle [x, y] -Werte in A ermitteln wollte, habe ich versucht, etwas entlang der Linien von zu tun

import scipy.spatial.distance
for q in range(0,len(B)):
y=scipy.spatial.distance.cdist(A,B[:q,:])

aber ich glaube nicht, dass dies funktioniert. Ich möchte nur eine Ausgabe, die den Abstand zwischen der q-ten Reihe von B und allen Punkten in A angibt.

Antworten:

1 für die Antwort № 1

Zwei Lösungen:

Berechnen Sie die komplette Matrix direkt und greifen Sie auf die q-te Spalte für die Werte zwischen A und B [q] zu.

d = scipy.spatial.distance.cdist(A,B)

for q in range(len(B)):
y = d[:,q]
print y

Wenn die resultierende Matrix zu groß ist, um im Speicher gespeichert zu werden. Sie könnten das tun.

for q in range(len(B)):
y = scipy.spatial.distance.cdist(A,[B[q]])
print y