[Numpy-discussion] block matrix and sums of blocks

Robert Kern robert.kern at gmail.com
Sun Feb 22 23:26:35 EST 2009


On Sun, Feb 22, 2009 at 19:39, Xavier Gnata <xavier.gnata at gmail.com> wrote:
> Hi,
>
> Let us consider one kN x kM array.
> What is the fastest way to sum each k x k square block of A and to put
> all these results into a NxM array B?
>
> For instance:
> If A =
> [112233
>  112233
>  223311
>  223311]
> then B =
> [4 8 12
>  4 12 4]
>
> No sanity checks on the arrays shapes are requiered. Only speed matters ;)

In [6]: A
Out[6]:
array([[1, 1, 2, 2, 3, 3],
       [1, 1, 2, 2, 3, 3],
       [2, 2, 3, 3, 1, 1],
       [2, 2, 3, 3, 1, 1]])

In [7]: k = 2

In [8]: add.reduceat(add.reduceat(A, arange(0, A.shape[0], k),
axis=0), arange(0, A.shape[1], k), axis=1)
Out[8]:
array([[ 4,  8, 12],
       [ 8, 12,  4]])

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list