On Tue, Jun 21, 2011 at 5:09 PM, Alex Flint <alex.fl...@gmail.com> wrote:
> Is there a fast way to compute an array of sum-of-squared-differences
> between a (small)  K x K array and all K x K sub-arrays of a larger array?
> (i.e. each element x,y in the output array is the SSD between the small
> array and the sub-array (x:x+K, y:y+K)
> My current implementation loops over each sub-array and computes the SSD
> with something like ((A-B)**2).sum().

I don't know of a clever way. But if ((A-B)**2).sum() is a sizable
fraction of the time, then you could use bottleneck:

        >> a = np.random.rand(5,5)
        >> timeit (a**2).sum()
        100000 loops, best of 3: 4.63 us per loop
        >> import bottleneck as bn
        >> timeit bn.ss(a)
        1000000 loops, best of 3: 1.77 us per loop
        >> func, b = bn.func.ss_selector(a, axis=None)
        >> func
           <built-in function ss_2d_float64_axisNone>
        >> timeit func(b)
        1000000 loops, best of 3: 830 ns per loop
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to