On 18 Feb 2014 11:05, "Charles R Harris" <charlesr.har...@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
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion