pwtools.num.slicetake¶
- pwtools.num.slicetake(a, sl, axis=None, copy=False)[source]¶
The equivalent of numpy.take(a, …, axis=<axis>), but accepts slice objects instead of an index array. Also by default, it returns a view and no copy.
- Parameters:
a (numpy ndarray)
sl (slice object, list or tuple of slice objects) –
- axis=<int>
one slice object for that axis
- axis=None
sl is a list or tuple of slice objects, one for each axis. It must index the whole array, i.e. len(sl) == len(a.shape).
axis ({None, int})
copy (bool, return a copy instead of a view)
- Return type:
A view into a or copy of a slice of a.
Examples
>>> from numpy import s_ >>> a = np.random.rand(20,20,20) >>> b1 = a[:,:,10:] >>> # single slice for axis 2 >>> b2 = slicetake(a, s_[10:], axis=2) >>> # tuple of slice objects >>> b3 = slicetake(a, s_[:,:,10:]) >>> (b2 == b1).all() True >>> (b3 == b1).all() True >>> # simple extraction too, sl = integer >>> (a[...,5] == slicetake(a, 5, axis=-1)) True