def take(arr, indices, axis=<NUM_LIT:0>, allow_fill=False, fill_value=None):
from pandas.core.indexing import validate_indices<EOL>if not is_array_like(arr):<EOL><INDENT>arr = np.asarray(arr)<EOL><DEDENT>indices = np.asarray(indices, dtype=np.intp)<EOL>if allow_fill:<EOL><INDENT>validate_indices(indices, len(arr))<EOL>result = take_1d(arr, indices, axis=axis, allow_fill=True,<EOL>fill_value=fill_value)<EOL><DEDENT>else:<EOL><INDENT>result = arr.take(indices, axis=axis)<EOL><DEDENT>return result<EOL>
Take elements from an array.

.. versionadded:: 0.23.0

Parameters
----------
arr : sequence
    Non array-likes (sequences without a dtype) are coerced
    to an ndarray.
indices : sequence of integers
    Indices to be taken.
axis : int, default 0
    The axis over which to select values.
allow_fill : bool, default False
    How to handle negative values in `indices`.

    * False: negative values in `indices` indicate positional indices
      from the right (the default). This is similar to :func:`numpy.take`.

    * True: negative values in `indices` indicate
      missing values. These values are set to `fill_value`. Any other
      other negative values raise a ``ValueError``.

fill_value : any, optional
    Fill value to use for NA-indices when `allow_fill` is True.
    This may be ``None``, in which case the default NA value for
    the type (``self.dtype.na_value``) is used.

    For multi-dimensional `arr`, each *element* is filled with
    `fill_value`.

Returns
-------
ndarray or ExtensionArray
    Same type as the input.

Raises
------
IndexError
    When `indices` is out of bounds for the array.
ValueError
    When the indexer contains negative values other than ``-1``
    and `allow_fill` is True.

Notes
-----
When `allow_fill` is False, `indices` may be whatever dimensionality
is accepted by NumPy for `arr`.

When `allow_fill` is True, `indices` should be 1-D.

See Also
--------
numpy.take

Examples
--------
>>> from pandas.api.extensions import take

With the default ``allow_fill=False``, negative numbers indicate
positional indices from the right.

>>> take(np.array([10, 20, 30]), [0, 0, -1])
array([10, 10, 30])

Setting ``allow_fill=True`` will place `fill_value` in those positions.

>>> take(np.array([10, 20, 30]), [0, 0, -1], allow_fill=True)
array([10., 10., nan])

>>> take(np.array([10, 20, 30]), [0, 0, -1], allow_fill=True,
...      fill_value=-10)
array([ 10,  10, -10])