Мне нужно окно катящегося (то есть скользящее окно), иерное по последовательности/итератору/генератору. (Итерация Python по умолчанию можно считать специальным случаем, когда длина окна равна 1.) Я в настоящее время использую следующий код. Как я могу сделать это более элегантно и/или эффективно?
def rolling_window(seq, window_size):
it = iter(seq)
win = [it.next() for cnt in xrange(window_size)] # First window
yield win
for e in it: # Subsequent windows
win[:-1] = win[1:]
win[-1] = e
yield win
if __name__=="__main__":
for w in rolling_window(xrange(6), 3):
print w
"""Example output:
[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
"""
< /code>
для конкретного < /em> случая window_size == 2 < /code> (т.е. итерация над соседним, перекрывающимся Пары в последовательности), см. Также как я могу итерацию по перекрывающимся (текущим, следующим) парам значений из списка?.
Подробнее здесь: https://stackoverflow.com/questions/682 ... w-iterator
Итератор с катаниями или скользящим окном? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я не понимаю, почему этот код неверен, хотя подход со скользящим окном работает нормально
Anonymous » » в форуме C++ - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Я не понимаю, почему этот код неверен, хотя подход со скользящим окном работает нормально
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ошибка позиционного кодирования со скользящим окном в модели трансформатора PyTorch
Anonymous » » в форуме Python - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-