2016-10-27 3 views
0

У меня есть массив numpy [1 2 3 4 5 6 7 8 9 10 11 12]. Хотите разделить субмассивы размером 6 с 3 перекрытиями [1 2 3 4 5 6] [4 5 6 7 8 9] [7 8 9 10 11 12] в приведенном выше случае.Подразделение с перекрытием

Я хочу сделать его обобщенным. Скажем, у меня есть массив размером в тысячу. Я хочу получить субмассивы размером 100 с 50 перекрытиями.

Кроме того, размер перекрытия всегда равен половине размера подматрицы.

ответ

2

Попробуйте это:

>>> size = 6 
>>> overlap = 3 
>>> z = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 
>>> zip(*[z[i:] for i in range(size)])[::overlap] 
[(1, 2, 3, 4, 5, 6), (4, 5, 6, 7, 8, 9), (7, 8, 9, 10, 11, 12)]