数年間、6時間ごとの時系列を含む3D(時間、X、Y)のnumpy配列があります。(たとえば5)。次のように、利用可能なレコード(1日あたり5つの可能性)からランダムに取得された各暦日の1つのインスタンスを含むサンプル時系列を作成したいと思います。
- 2006年1月1日
- 2011年1月2日
- 2009年1月3日
- ..。
これは、2006年1月1日から4つの値、2011年2月1日から4つの値などを取得する必要があることを意味します。次のように機能する作業バージョンがあります。
- 入力配列の形状を変更して、「年」のディメンション(Time、Year、X、Y)を追加します
- 0から4までのランダムに生成された整数の365値配列を作成します
- np.repeatと整数の配列を使用して、関連する値のみを抽出します。
例:
sampledValues = Variable[np.arange(numberOfDays * ValuesPerDays), sampledYears.repeat(ValuesPerDays),:,:]
これはうまくいくようですが、これが私の問題を解決するための最良/最速のアプローチであるかどうか疑問に思いましたか?私はこれをループで行っているので、速度は重要です。adnは、できるだけ多くのケースをテストすることでメリットが得られます。
私はこれを正しくやっていますか?
ありがとう
編集 うるう年の2月29日を削除するために、入力データセットをフィルタリングしたことを忘れました。
基本的に、その操作の目的は、平均などの点で長期時系列によく一致する365日のサンプルを見つけることです。サンプリングされた時系列が品質テストに合格した場合は、エクスポートしてやり直したいと思います。