I have an array of data, called A that looks something like:
我有一个数组,称为A,看起来像:
array([[0.59, 1.23], [0.89, 1.67], [0.21,0.99]...])
and has about 400 sets of [x,y] points in it. I want to find the distance between every set of points in A to each sets of points in B, which is another array which looks exactly the same as A but is half the length (So about 200 sets of[x,y] points). So if I wanted to find the distance between the q-th pair of [x,y] values in B against all [x,y] values in A, I've tried doing something along the lines of
并且其中有大约400套[x,y]点。我想找到A中每组点与B中每组点之间的距离,这是另一个看起来与A完全相同但是长度的一半的数组(所以大约有200组[x,y]点) 。因此,如果我想找到B中第q对[x,y]值与A中所有[x,y]值之间的距离,我尝试按照
import scipy.spatial.distance
for q in range(0,len(B)):
y=scipy.spatial.distance.cdist(A,B[:q,:])
but I don't think this is working. I just want an output that shows the distance between the q-th row of B against all points in A.
但我认为这不起作用。我只想要一个输出,显示B的第q行与A中所有点之间的距离。
1 个解决方案
#1
1
Two solutions:
两种解决方案
calculate the complete matrix directly, and the access the q-th column for the values between A and B[q].
直接计算完整矩阵,并访问第q列,得到A和B [q]之间的值。
d = scipy.spatial.distance.cdist(A,B)
for q in range(len(B)):
y = d[:,q]
print y
If the resulting matrix is too big to hold in memory. You could do this.
如果结果矩阵太大而无法保存在内存中。你可以做到这一点。
for q in range(len(B)):
y = scipy.spatial.distance.cdist(A,[B[q]])
print y
#1
1
Two solutions:
两种解决方案
calculate the complete matrix directly, and the access the q-th column for the values between A and B[q].
直接计算完整矩阵,并访问第q列,得到A和B [q]之间的值。
d = scipy.spatial.distance.cdist(A,B)
for q in range(len(B)):
y = d[:,q]
print y
If the resulting matrix is too big to hold in memory. You could do this.
如果结果矩阵太大而无法保存在内存中。你可以做到这一点。
for q in range(len(B)):
y = scipy.spatial.distance.cdist(A,[B[q]])
print y