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

Charles R Harris charlesr.harris at gmail.com
Tue Feb 18 12:03:56 EST 2014


On Tue, Feb 18, 2014 at 9:40 AM, Nathaniel Smith <njs at pobox.com> wrote:

> 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.
>

I believe it does return views when possible. There are two patches
attached to the issue, one for the function and another for tests. So here
is an easy commit for someone ;) The original author seems to be Anne
Archibald, who should be mentioned if this is put in.

Where does 'shingle' come from. I can see the analogy but haven't seen that
as a technical term.

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


More information about the NumPy-Discussion mailing list