[Numpy-discussion] Distance Matrix speed
Christopher Barker
Chris.Barker at noaa.gov
Fri Jun 16 12:05:33 CDT 2006
Bruce Southey wrote:
> Please run the exact same code in Matlab that you are running in
> NumPy. Many of Matlab functions are very highly optimized so these are
> provided as binary functions. I think that you are running into this
> so you are not doing the correct comparison
He is doing the correct comparison: if Matlab has some built-in compiled
utility functions that numpy doesn't -- it really is faster!
It looks like other's suggestions show that well written numpy code is
plenty fast, however.
One more suggestion I don't think I've seen: numpy provides a built-in
compiled utility function: hypot()
>>> x = N.arange(5)
>>> y = N.arange(5)
>>> N.hypot(x,y)
array([ 0. , 1.41421356, 2.82842712, 4.24264069, 5.65685425])
>>> N.sqrt(x**2 + y**2)
array([ 0. , 1.41421356, 2.82842712, 4.24264069, 5.65685425])
Timings:
>>> timeit.Timer('N.sqrt(x**2 + y**2)','import numpy as N; x =
N.arange(5000); y = N.arange(5000)').timeit(100)
0.49785208702087402
>>> timeit.Timer('N.hypot(x,y)','import numpy as N; x = N.arange(5000);
y = N.arange(5000)').timeit(100)
0.081479072570800781
A factor of 6 improvement.
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
NOAA/OR&R/HAZMAT (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the Numpy-discussion
mailing list