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 № 1Dos 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