/ / encontrar la distancia entre un conjunto de puntos usando scipy.spatial.distance.cdist (X, Y) en python - python, arrays, distance

encontrar la distancia entre un conjunto de puntos usando scipy.spatial.distance.cdist (X, Y) en python - python, arrays, distancia

Tengo una matriz de datos, llamada A que se parece a algo como:

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

y tiene alrededor de 400 conjuntos de [x, y] puntos. Quiero encontrar la distancia entre cada conjunto de puntos en A a cada conjunto de puntos en B, que es otra matriz que se ve exactamente igual a A pero tiene la mitad de la longitud (aproximadamente 200 conjuntos de puntos [x, y]) . Entonces, si quisiera encontrar la distancia entre el q-ésimo par de valores de [x, y] en B contra todos los valores de [x, y] en A, he intentado hacer algo en la línea de

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

pero no creo que esto esté funcionando. Solo quiero una salida que muestre la distancia entre la fila q de th contra todos los puntos en A.

Respuestas

1 para la respuesta № 1

Dos soluciones:

calcule la matriz completa directamente y acceda a la columna q-th para los valores entre A y B [q].

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

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

Si la matriz resultante es demasiado grande para guardarla en la memoria. Podrías hacer esto.

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