<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def image(img, cmap='gray', bar=False, nans=True, clim=None, size=7, ax=None):
 """ Streamlined display of images using matplotlib. Parameters img : ndarray, 2D or 3D The image to display cmap : str or Colormap, optional, default = 'gray' A colormap to use, for non RGB images bar : boolean, optional, default = False Whether to append a colorbar nans : boolean, optional, deafult = True Whether to replace NaNs, if True, will replace with 0s clim : tuple, optional, default = None Limits for scaling image size : scalar, optional, deafult = 9 Size of the figure ax : matplotlib axis, optional, default = None An existing axis to plot into """

    from matplotlib.pyplot import axis, colorbar, figure, gca

    img = asarray(img)

    if (nans is True) and (img.dtype != bool):
        img = nan_to_num(img)

    if ax is None:
        f = figure(figsize=(size, size))
        ax = gca()

    if img.ndim == 3:
        if bar:
            raise ValueError("Cannot show meaningful colorbar for RGB images")
        if img.shape[2] != 3:
            raise ValueError("Size of third dimension must be 3 for RGB images, got %g" % img.shape[2])
        mn = img.min()
        mx = img.max()
        if mn < 0.0 or mx > 1.0:
            raise ValueError("Values must be between 0.0 and 1.0 for RGB images, got range (%g, %g)" % (mn, mx))
        im = ax.imshow(img, interpolation='nearest', clim=clim)
    else:
        im = ax.imshow(img, cmap=cmap, interpolation='nearest', clim=clim)

    if bar is True:
        cb = colorbar(im, fraction=0.046, pad=0.04)
        rng = abs(cb.vmax - cb.vmin) * 0.05
        cb.set_ticks([around(cb.vmin + rng, 1), around(cb.vmax - rng, 1)])
        cb.outline.set_visible(False)

    axis('off')

    return im