Search code examples
pythonimagenumpystackconcatenation

Stacking two 3D numpy arrays along the median of the z-axis and keep the size of the smaller array


I want to stack two sets of images (im-series1 = 32x32x16 and im_series2 = 32x32x21) based on the median of the z axis and keep the adjacent values with respect to the shape of im-series1 1.

enter image description here


Solution

  • What you should do is first crop im_series2, and then stack. Note that there are two ways to crop im_series to fit im_series1, both are "median".

    import numpy as np
    im_series2 = np.ones((32, 32, n)) # this is im_series2 as an example
    mid = n // 2
    im_series2 = im_series2[:, :, mid-8:mid+8] # this is the cropping. [:,:,2:-3] is also valid
    print(im_series2.shape)
    im_series1 = np.ones((32, 32, 16)) # this is im_series1 as an example
    print(im_series1 .shape)
    c = np.concatenate((im_series1 , im_series2), axis=-1) # this concatenates them on the z_axis
    print(c.shape)
    

    This outputs:

    (32, 32, 16)
    (32, 32, 16)
    (32, 32, 32)