import numpy as np

def bin_2d(a, bin_size=2):
   s = a.shape
   a = a[0:bin_size*(s[0]//bin_size),0:bin_size*(s[1]//bin_size)]
   s = a.shape
   b = a.reshape(s[0], s[1]//bin_size, bin_size)
   b = np.transpose(b, axes=(1,0,2))
   b = b.reshape(s[1]//bin_size, bin_size*bin_size*s[0]//bin_size)
   b = b.reshape(s[1]//bin_size, s[0]//bin_size, bin_size*bin_size)
   b = np.transpose(b, axes=(1,0,2))
   return b
