The problem is about using rasterio to generate mask from GeoJSON file which contains geographic coordinates. The function that I used is from: from rasterio.tools.mask import mask with rasterio.open(img_path) as src: img_mask, out_transform = mask(src, [poly], crop = False) The shape of the mask that I generated is: (4, 256, 256) I converted this mask to (256,256) black and white image by taking the first channel of the mask. I used for loop to do this process couple times, and then I appended all the (256,256) masks into a list. I tried to use np.stack to convert the list to a numpy array with dimension (256,256,?). However, I got an array with dimension (?,256,256). I tried to set axis=-1; however, the image shape becomes (256,?) rather than (256,256). Is there any method that can convert the channel first array to a channel last array with numpy?