下記の関数は画像をマージさせる処理なんですが、

img[j*h:j*h+h, i*w:i*w+w, :] = image

のコードはどのように配列計算しているんでしょうか。

def merge(images, size):
  h, w = images.shape[1], images.shape[2]
  img = np.zeros((h*size[0], w*size[1], 1))
  for idx, image in enumerate(images):
    i = idx % size[1]
    j = idx // size[1]
    img[j*h:j*h+h, i*w:i*w+w, :] = image

  return img