Каков самый быстрый способ выборки фрагментов множества массивов?

У меня есть массив чисел 3D (время, X, Y), содержащий 6 часовых временных рядов за несколько лет. (скажем 5). Я хотел бы создать выборочный временной ряд, содержащий 1 экземпляр каждого календарного дня, случайным образом взятый из доступных записей (5 вариантов в день), следующим образом.

  • 01 января: 2006
  • 02 января: 2011
  • 03 января: 2009
  • ...

это означает, что мне нужно взять 4 значения с 01.01.2006, 4 значения с 02 / 01/2011 и др. У меня есть рабочая версия, которая работает следующим образом:

  • Измените форму входного массива, чтобы добавить измерение «год» (время, год, X, Y)
  • Создайте массив из 365 значений случайно сгенерированных целых чисел от 0 до 4
  • Используйте np.repeat и массив целых чисел для извлечения только соответствующих значений:

Пример:

sampledValues = Variable[np.arange(numberOfDays * ValuesPerDays), sampledYears.repeat(ValuesPerDays),:,:]

Кажется, это работает, но мне было интересно, является ли это лучший / самый быстрый подход для решения моих проблема? Скорость важна, поскольку я делаю это в цикле, и было бы полезно протестировать как можно больше случаев.

Правильно ли я делаю?

Спасибо

РЕДАКТИРОВАТЬ Я забыл упомянуть, что отфильтровал входной набор данных, чтобы удалить 29 февраля для високосных лет.

В основном цель этой операции состоит в том, чтобы найти выборку за 365 дней, которая хорошо соответствует долгосрочному временному ряду с точки зрения среднего значения и т. Д. Если выбранный временной ряд проходит мой тест качества, я хочу экспортировать его и начать заново.

5
задан Jahfet 21 October 2011 в 13:33
поделиться