code: def zoom(
      input,
      zoom,
      output=None,
      order=3,
      mode="constant",
      cval=0.0,
      prefilter=True,
  ):
      """
      Zoom an array.
  
      The array is zoomed using spline interpolation of the requested order.
  
      Parameters
      ----------
      %(input)s
      zoom : float or sequence
          The zoom factor along the axes. If a float, `zoom` is the same for each
          axis. If a sequence, `zoom` should contain one value for each axis.
      %(output)s
      order : int, optional
          The order of the spline interpolation, default is 3.
          The order has to be in the range 0-5.
      %(mode)s
      %(cval)s
      %(prefilter)s
  
      Returns
      -------
      zoom : ndarray
          The zoomed input.
  
      Examples
      --------
      >>> from scipy import ndimage, misc
      >>> import matplotlib.pyplot as plt
  
      >>> fig = plt.figure()
      >>> ax1 = fig.add_subplot(121)  # left side
      >>> ax2 = fig.add_subplot(122)  # right side
      >>> ascent = misc.ascent()
      >>> result = ndimage.zoom(ascent, 3.0)
      >>> ax1.imshow(ascent)
      >>> ax2.imshow(result)
      >>> plt.show()
  
      >>> print(ascent.shape)
      (512, 512)
  
      >>> print(result.shape)
      (1536, 1536)
      """
      if order < 0 or order > 5:
          raise RuntimeError("spline order not supported")
      input = numpy.asarray(input)
      if numpy.iscomplexobj(input):
          raise TypeError("Complex type not supported")
      if input.ndim < 1:
          raise RuntimeError("input and output rank must be > 0")
      mode = _ni_support._extend_mode_to_code(mode)
      if prefilter and order > 1:
          filtered = spline_filter(input, order, output=numpy.float64)
      else:
          filtered = input
      zoom = _ni_support._normalize_sequence(zoom, input.ndim)
      output_shape = tuple(
          [int(round(ii * jj)) for ii, jj in zip(input.shape, zoom)]
      )
  
      output_shape_old = tuple(
          [int(ii * jj) for ii, jj in zip(input.shape, zoom)]
      )
      if output_shape != output_shape_old:
          warnings.warn(
              "From scipy 0.13.0, the output shape of zoom() is calculated "
              "with round() instead of int() - for these inputs the size of "
              "the returned array has changed.",
              UserWarning,
          )
  
      zoom_div = numpy.array(output_shape, float) - 1
      # Zooming to infinite values is unpredictable, so just choose
      # zoom factor 1 instead
      zoom = numpy.divide(
          numpy.array(input.shape) - 1,
          zoom_div,
          out=numpy.ones_like(input.shape, dtype=numpy.float64),
          where=zoom_div != 0,
      )
  
      output = _ni_support._get_output(
          output, input, shape=output_shape
      )
      zoom = numpy.ascontiguousarray(zoom)
      _nd_image.zoom_shift(
          filtered, zoom, None, output, order, mode, cval
      )
      return output
  
file_path: catboost/contrib/python/scipy/py2/scipy/ndimage/interpolation.py
imports: from __future__ import division, print_function, absolute_import
  import math
  import numpy
  import warnings
  from .None import _ni_support
  from .None import _nd_image
  from ._ni_docstrings import docdict
  from scipy.misc import doccer
label_desc: Use image node_id 7 for calling a global function with example usage: zoom(input, zoom, output, order, mode, cval, prefilter) and returns: output