[Numpy-discussion] Distance Matrix speed

Alan G Isaac aisaac at american.edu
Tue Jun 20 03:15:31 EDT 2006


I think the distance matrix version below is about as good 
as it gets with these basic strategies.

fwiw,
Alan Isaac

def dist(A,B):
    rowsA, rowsB = A.shape[0], B.shape[0]
    distanceAB = empty( [rowsA,rowsB] , dtype=float)
    if rowsA <= rowsB:
        temp = empty_like(B)
        for i in range(rowsA):
            #store A[i]-B in temp
            subtract( A[i], B, temp )
            temp *= temp
            sqrt( temp.sum(axis=1), distanceAB[i,:])
    else:
        temp = empty_like(A)
        for j in range(rowsB):
            #store A-B[j] in temp
            temp = subtract( A, B[j], temp )
            temp *= temp
            sqrt( temp.sum(axis=1), distanceAB[:,j])
    return distanceAB






More information about the NumPy-Discussion mailing list