У меня есть 3D-массив (время, X, Y), содержащий 6 часовых временных рядов в течение нескольких лет.(скажем 5).Я хотел бы создать выборочный временной ряд, содержащий 1 экземпляр каждого календарного дня, случайным образом взятый из доступных записей (5 вариантов в день), следующим образом.
- 01 января: 2006
- 02 января 2011 года
- 03 января 2009 года
- ...
это означает, что мне нужно взять 4 значения с 01.01.2006, 4 значенияот 01.02.2011 и т. д. У меня есть рабочая версия, которая работает следующим образом:
- Изменение формы входного массива для добавления измерения "год" (Время, Год, X, Y)
- Создайте массив из 365 значений случайно сгенерированных целых чисел от 0 до 4
- Используйте np.repeat и массив целых чисел, чтобы извлечь только соответствующие значения:
Пример:
sampledValues = Variable[np.arange(numberOfDays * ValuesPerDays), sampledYears.repeat(ValuesPerDays),:,:]
Кажется, это работает, но мне было интересно, если это лучший / самый быстрый подход для решения моей проблемы?Скорость важна, так как я делаю это в цикле, и ADN выиграет от тестирования как можно большего числа случаев.
Правильно ли я делаю это?
Спасибо
EDIT Я забыл упомянуть, что отфильтровал входной набор данных, чтобы удалить 29-е февраля для високосных лет.
По сути, цель этой операции - найти выборку за 365 дней, которая хорошо соответствует долгосрочному периоду.временные ряды в терминах среднего значения и т. д. Если отобранные временные ряды проходят мой тест качества, я хочу экспортировать их и начать заново.