# [SciPy-User] How Can I Bin A Matrix?

Sebastian Berg sebastian@sipsolutions....
Thu Oct 29 11:11:15 CDT 2009

```Hi,

I didn't test it much, so I hope its not completely wrong, but I think
such a thing should do it too with some array reshaping magic, only
tried with some simple square arrays though:

import numpy as np

def bin(a, n):
if np.any(np.array(a.shape) % n != 0):
raise ValueError('Clipping not supported')
if a.ndim != 2:
raise ValueError('Only 2D supported here')

avg = a.reshape(-1, n).mean(1)

avg = avg.reshape(-1, n, a.shape[0]/n).mean(1)

return avg

Regards,

Sebastian

On Thu, 2009-10-29 at 23:09 +0900, David Cournapeau wrote:
> On Thu, Oct 29, 2009 at 10:58 PM, Joseph Smidt <josephsmidt@gmail.com> wrote:
> > Hello,
> >
> >     Lets pretend I have some random 100x100 matrix and I wanted to
> > form a 10x10 matrix where each element of the 10x10 matrix is the
> > average of the corresponding 10x10  block of the 100x100 matrix.
>
> you could simply add submatrices for each item of a submatrix. To take
> your example with 2x2 submatrices:
>
> 0.25 * (x[::2,::2] + x[1::2, ::2] + x[::2, 1::2] + x[1::2,1::2])
>
> David
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user

```