From: Johannes L. <a.u...@gm...> - 2006-06-16 06:28:31
|
Hi, def dtest(): =A0 =A0 A =3D random( [4,2]) =A0 =A0 B =3D random( [1000,2]) # drawback: memory usage temporarily doubled # solution see below d =3D A[:, newaxis, :] - B[newaxis, :, :] # written as 3 expressions for more clarity d =3D sqrt((d**2).sum(axis=3D2)) return d def dtest_lowmem(): A =3D random( [4,2]) B =3D random( [1000,2]) d =3D zeros([4, 1000], dtype=3D'f') # stores result for i in range(len(A)): # the loop should not impose much loss in speed dtemp =3D A[i, newaxis, :] - B[:, :] dtemp =3D sqrt((dtemp**2).sum(axis=3D1)) d[i] =3D dtemp return d (both functions untested....) HTH, Johannes |