<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def asarray(self, key=None, series=None):
 """Return image data of multiple TIFF pages as numpy array. By default the first image series is returned. Parameters key : int, slice, or sequence of page indices Defines which pages to return as array. series : int Defines which series of pages to return as array. """

        if key is None and series is None:
            series = 0
        if series is not None:
            pages = self.series[series].pages
        else:
            pages = self.pages

        if key is None:
            pass
        elif isinstance(key, int):
            pages = [pages[key]]
        elif isinstance(key, slice):
            pages = pages[key]
        elif isinstance(key, collections.Iterable):
            pages = [pages[k] for k in key]
        else:
            raise TypeError('key must be an int, slice, or sequence')

        if len(pages) == 1:
            return pages[0].asarray()
        elif self.is_nih:
            result = numpy.vstack(p.asarray(colormapped=False,
                                            squeeze=False) for p in pages)
            if pages[0].is_palette:
                result = numpy.take(pages[0].color_map, result, axis=1)
                result = numpy.swapaxes(result, 0, 1)
        else:
            if self.is_ome and any(p is None for p in pages):
                firstpage = next(p for p in pages if p)
                nopage = numpy.zeros_like(
                    firstpage.asarray())
            result = numpy.vstack((p.asarray() if p else nopage)
                                  for p in pages)
        if key is None:
            try:
                result.shape = self.series[series].shape
            except ValueError:
                warnings.warn("failed to reshape %s to %s" % (
                              result.shape, self.series[series].shape))
                result.shape = (-1,) + pages[0].shape
        else:
            result.shape = (-1,) + pages[0].shape
        return result