[Numpy-discussion] New (old) function proposal.

Nathaniel Smith njs at pobox.com
Tue Feb 18 11:40:49 EST 2014


On 18 Feb 2014 11:05, "Charles R Harris" <charlesr.harris at gmail.com> wrote:
>
> Hi All,
>
> There is an old ticket, #1499, that suggest adding a segment_axis
function.
>
> def segment_axis(a, length, overlap=0, axis=None, end='cut', endvalue=0):
>     """Generate a new array that chops the given array along the given
axis
>     into overlapping frames.
>
>     Parameters
>     ----------
>     a : array-like
>         The array to segment
>     length : int
>         The length of each frame
>     overlap : int, optional
>         The number of array elements by which the frames should overlap
>     axis : int, optional
>         The axis to operate on; if None, act on the flattened array
>     end : {'cut', 'wrap', 'end'}, optional
>         What to do with the last frame, if the array is not evenly
>         divisible into pieces.
>
>             - 'cut'   Simply discard the extra values
>             - 'wrap'  Copy values from the beginning of the array
>             - 'pad'   Pad with a constant value
>
>     endvalue : object
>         The value to use for end='pad'
>
>
>     Examples
>     --------
>     >>> segment_axis(arange(10), 4, 2)
>     array([[0, 1, 2, 3],
>            [2, 3, 4, 5],
>            [4, 5, 6, 7],
>            [6, 7, 8, 9]])
>
>
> Is there and interest in having this function available?

I'd use it, though haven't looked at the details of this api per set yet.

rolling_window or shingle are better names.

It should probably be documented and implemented to return a view when
possible (using stride tricks). Along with a note that whether this is
possible depends heavily on 32- vs. 64-bitness.

-n
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140218/5c3213ba/attachment.html>


More information about the NumPy-Discussion mailing list