self._index = index.copy()

def __array__(self):
    return self._array[self._index]

def __getitem__(self, index):
    return self._array[self._index[index]]
b = FancyView(a, p)
Generating a remapped numpy array as a view.