from . import abstract

from ..core.data import NumpyArray as core_NumpyArray


class NumpyArray(abstract.Array, core_NumpyArray):
    '''An underlying numpy array.

    '''
    def __getitem__(self, indices):
        '''x.__getitem__(indices) <==> x[indices]

Returns a subspace of the array as an independent numpy array.

The indices that define the subspace must be either `Ellipsis` or a
sequence that contains an index for each dimension. In the latter
case, each dimension's index must either be a `slice` object or a
sequence of two or more integers.

Indexing is similar to numpy indexing. The only difference to numpy
indexing (given the restrictions on the type of indices allowed) is:

  * When two or more dimension's indices are sequences of integers
    then these indices work independently along each dimension
    (similar to the way vector subscripts work in Fortran).

        '''
        return self.get_subspace(self._get_component('array'), indices,
                                 copy=True)
    #--- End: def

#--- End: class
