NiBabel

Access a cacophony of neuro-imaging file formats

Previous topic

nibabel.funcs.four_to_three

Next topic

nibabel.imageclasses

This Page

Reggie -- the one

nibabel.funcs.squeeze_image

nibabel.funcs.squeeze_image(img)

Return image, remove axes length 1 at end of image shape

For example, an image may have shape (10,20,30,1,1). In this case squeeze will result in an image with shape (10,20,30). See doctests for further description of behavior.

Parameters :

img : SpatialImage

Returns :

squeezed_img : SpatialImage

Copy of img, such that data, and data shape have been squeezed, for dimensions > 3rd, and at the end of the shape list

Examples

>>> import nibabel as nf
>>> shape = (10,20,30,1,1)
>>> data = np.arange(np.prod(shape)).reshape(shape)
>>> affine = np.eye(4)
>>> img = nf.Nifti1Image(data, affine)
>>> img.shape
(10, 20, 30, 1, 1)
>>> img2 = squeeze_image(img)
>>> img2.shape
(10, 20, 30)

If the data are 3D then last dimensions of 1 are ignored

>>> shape = (10,1,1)
>>> data = np.arange(np.prod(shape)).reshape(shape)
>>> img = nf.ni1.Nifti1Image(data, affine)
>>> img.shape
(10, 1, 1)
>>> img2 = squeeze_image(img)
>>> img2.shape
(10, 1, 1)

Only final dimensions of 1 are squeezed

>>> shape = (1, 1, 5, 1, 2, 1, 1)
>>> data = data.reshape(shape)
>>> img = nf.ni1.Nifti1Image(data, affine)
>>> img.shape
(1, 1, 5, 1, 2, 1, 1)
>>> img2 = squeeze_image(img)
>>> img2.shape
(1, 1, 5, 1, 2)