Я реализую алгоритм машинного обучения и извлекаю функции из фрейма данных. Мне явно нужно перекрытие windows. Предположим, что DataFrame выглядит следующим образом
x y z
12.1 11 0.5
12.2 10 0.3
12.4 11 0.5
12.8 12 0.4
13.1 13 0.4
14.7 14 0.5
15.2 14 0.6
15.3 13 0.5
17.3 14 0.5
18.2 15 0.4
16.1 16 0.2
15.0 17 0.1
Но на самом деле он намного больше (тысячи образцов). Теперь я хочу получить список фреймов данных, где каждый DataFrame
имеет длину ws
(здесь 150) и имеет step
(шаг) 60.
Это то, что я получил
r = np.arange(len(df))
s = r[::step]
return [df.iloc[k:k+ws] for k in s]
Это работает довольно хорошо, но есть еще одна проблема. Последние 1,2 или 3 кадра могут не иметь длины ws
. Я также не могу просто отбросить последние 3, так как иногда есть только один, длина которого меньше ws
. Так что переменная s
просто хранит все стартовые индексы, мне нужен способ иметь только стартовые индексы, где start_index + step < len(df)
. Если, конечно, есть лучшие и более быстрые способы для этого (возможно, библиотека). Вся существующая документация говорит только о простых массивах.