[Numpy-discussion] Distance Matrix speed

Tim Hochberg tim.hochberg at cox.net
Sun Jun 18 22:18:23 CDT 2006


Alan G Isaac wrote:

>On Sun, 18 Jun 2006, Sebastian Beca apparently wrote: 
>  
>
>>def dist():
>>d = zeros([N, C], dtype=float)
>>if N < C: for i in range(N):
>> xy = A[i] - B d[i,:] = sqrt(sum(xy**2, axis=1))
>> return d
>>else:
>> for j in range(C):
>> xy = A - B[j] d[:,j] = sqrt(sum(xy**2, axis=1))
>>return d 
>>    
>>
>
>
>But that is 50% slower than Johannes's version:
>
>def dist_loehner1():
>        d = A[:, newaxis, :] - B[newaxis, :, :]
>        d = sqrt((d**2).sum(axis=2))
>	return d
>  
>
Are you sure about that? I just ran it through timeit, using Sebastian's 
array sizes and I get Sebastian's version being 150% *faster*. This 
could well be cache size dependant, so may vary from box to box, but I'd 
expect Sebastian's current version to scale better in general.


-tim







More information about the Numpy-discussion mailing list