code: def array_split(ary, indices_or_sections, axis=0):
      """
      Split an array into multiple sub-arrays.
  
      Please refer to the ``split`` documentation.  The only difference
      between these functions is that ``array_split`` allows
      `indices_or_sections` to be an integer that does *not* equally
      divide the axis. For an array of length l that should be split
      into n sections, it returns l % n sub-arrays of size l//n + 1
      and the rest of size l//n.
  
      See Also
      --------
      split : Split array into multiple sub-arrays of equal size.
  
      Examples
      --------
      >>> x = np.arange(8.0)
      >>> np.array_split(x, 3)
          [array([ 0.,  1.,  2.]), array([ 3.,  4.,  5.]), array([ 6.,  7.])]
  
      >>> x = np.arange(7.0)
      >>> np.array_split(x, 3)
          [array([ 0.,  1.,  2.]), array([ 3.,  4.]), array([ 5.,  6.])]
  
      """
      try:
          Ntotal = ary.shape[axis]
      except AttributeError:
          Ntotal = len(ary)
      try:
          # handle array case.
          Nsections = len(indices_or_sections) + 1
          div_points = [0] + list(indices_or_sections) + [Ntotal]
      except TypeError:
          # indices_or_sections is a scalar, not an array.
          Nsections = int(indices_or_sections)
          if Nsections <= 0:
              raise ValueError("number sections must be larger than 0.")
          Neach_section, extras = divmod(Ntotal, Nsections)
          section_sizes = (
              [0]
              + extras * [Neach_section + 1]
              + (Nsections - extras) * [Neach_section]
          )
          div_points = _nx.array(section_sizes, dtype=_nx.intp).cumsum()
  
      sub_arys = []
      sary = _nx.swapaxes(ary, axis, 0)
      for i in range(Nsections):
          st = div_points[i]
          end = div_points[i + 1]
          sub_arys.append(_nx.swapaxes(sary[st:end], axis, 0))
  
      return sub_arys
  
imports: from __future__ import division, absolute_import, print_function
  import functools
  import warnings
  import numpy.core.numeric
  from numpy.core.numeric import asarray, zeros, outer, concatenate, array, asanyarray
  from numpy.core.fromnumeric import product, reshape, transpose
  from numpy.core.multiarray import normalize_axis_index
  from numpy.core import overrides
  from numpy.core import vstack, atleast_3d
  from numpy.core.shape_base import _arrays_for_stack_dispatcher, _warn_for_nonsequence
  from numpy.lib.index_tricks import ndindex
  from numpy.matrixlib.defmatrix import matrix
label_desc: Use image node_id 18 for calling a global function with example usage: array_split(ary, indices_or_sections, axis) and returns: sub_arys