Source code for sciquence.sequences.window_generator

# Krzysztof Joachimiak 2017
# sciquence: Time series & sequences in Python
#
# Classifying data fragments with sliding window
# Author: Krzysztof Joachimiak
#
# License: MIT

import numpy as np


[docs]def wingen(X, window_size, step=1, raw=False): ''' Generate subsequences from a single sequence. Generator usage reduces memory consumption. Parameters ---------- X: ndarray (n_samples, n_features) Array of size window_size: int Size of sliding window step: int Size of sliding window step raw: bool If true, the last window will be yielded even if shorter than Yields ------- subsequence: ndarray (window_size, n_features) Subsequence from X sequence Examples -------- >>> import sciquence.sequences as sq >>> import numpy as np >>> X = np.array([[1, 2, 3,], >>> [11, 12, 13], >>> [21, 22, 23], >>> [31, 32, 33]]) >>> print sq.wingen(X, 2, 1).next() >>> [[ 1 2 3] >>> [11 12 13]] ''' if raw: end = len(X) else: end = len(X)-window_size+1 for i in xrange(0, end, step): yield X[i:i+window_size]
def multi_wingen(X, window_size, step, raw=False): ''' Generate subsequences from a single sequence. Generator usage reduces memory consumption. Parameters ---------- X: ndarray (n_sequences, n_samples, n_features) or list of ndarray (n_samples, n_features) 3-dimensional array or list of sequences window_size: int Size of sliding window step: int Size of sliding window step raw: bool If true, the last window will be yielded even if shorter than Yields ------- subsequence: ndarray (window_size, n_features) Subsequence from X sequence ''' if raw: end = len(X) else: end = len(X)-window_size+1 for sequence in X: for i in xrange(0, end, step): yield sequence[i:i+step]