code: def extract_cylinder(im, r=None, axis=0):
      r
      if r is None:
          a = list(im.shape)
          a.pop(axis)
          r = sp.floor(sp.amin(a) / 2)
      dim = [range(int(-s / 2), int(s / 2) + s % 2) for s in im.shape]
      inds = sp.meshgrid(*dim, indexing='ij')
      inds[axis] = inds[axis] * 0
      d = sp.sqrt(sp.sum(sp.square(inds), axis=0))
      mask = d < r
      im_temp = im*mask
      return im_temp
docs: r"""
      Returns a cylindrical section of the image of specified radius.
  
      This is useful for making square images look like cylindrical cores such
      as those obtained from X-ray tomography.
  
      Parameters
      ----------
      im : ND-array
          The image of the porous material.  Can be any data type.
  
      r : scalr
          The radius of the cylinder to extract.  If ``None`` is given then the
          default is the largest cylinder that can fit inside the specified
          plane.
  
      axis : scalar
          The axis along with the cylinder will be oriented.
  
      Returns
      -------
      image : ND-array
          A copy of ``im`` with values outside the cylindrical area set to 0 or
          ``False``.