2016-08-31 10 views
0

3次元で時間インデックス(datetimeなど)の形式を使用して3次元配列のインデックスを作成する方法はありますか?python 3D numpy配列時間インデックス

私の問題は、私が数千のレーダー画像を時系列で分析していることです。例えば、毎月の平均を取る必要があります。しかし、もし私が単純に3次元の31アレイごとに平均すると、短い月と欠落したデータ等のために不十分になります。

+0

ルックアップ 'np.datetime64' – hpaulj

答えて

1

あなたはpandasモジュールを使うことができます。日付/日時範囲による索引付けをサポートしています。マルチインデックスをサポートしているため、多次元データを2D形式で扱うことができます。

>>> rng = pd.date_range('1/1/2016', periods=100, freq='D') 
>>> rng[:5] 

DatetimeIndex(['2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04', '2016-01-05'], dtype='datetime64[ns]', freq='D') 

>>> ts = pd.Series(np.random.randn(len(rng)), index=rng) 
>>> ts.head() 

2016-01-01 0.119762 
2016-01-02 -0.010990 
2016-01-03 0.226537 
2016-01-04 -0.087559 
2016-01-05 0.484426 
Freq: D, dtype: float64 

>>> ts.resample('M').mean() 

2016-01-31 -0.171578 
2016-02-29 0.055878 
2016-03-31 -0.243225 
2016-04-30 -0.015087 
Freq: M, dtype: float64 

以下のいくつかの詳細な情報のチェック:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DatetimeIndex.html http://pandas.pydata.org/pandas-docs/stable/timeseries.html http://pandas.pydata.org/pandas-docs/stable/advanced.html

0

は、私が使用した疑似ソリューションを投稿:

問題ここでは、3Dのために日時のインデックスの欠如でありますアレイデータ(すなわち、サチュライト、レーダー)。パンダには時系列関数がありますが、配列については(私が知っている限り)はありません。

このソリューションは、使用しているデータファイルの名前に日付時刻があります。 「200401010000」は「yyyymmddhhMM」です。

  1. すべてのデータ(場所に時間がありません)を含む3D配列を作成します。
  2. タイムスタンプのリスト(長さは3d配列の長さに一致)
  3. dfaインデックスとしてタイムスタンプ(2)を使用してdfaを作成し、実行中の整数の列 'inx'を作成します(範囲(0、len(配列)=整数= 3次元配列のインデックス)
  4. データの開始時間と終了時間とデータの既知の頻度を使用してdatetimeインデックスを作成します(欠落している日付時間はありません)。 。
  5. でDFA(4)左マージに
  6. DFB(3)。アカDFAは現在、正確な日時インデックス及び「INX」カラム3Dアレイインデックスpostitionをcontaingとナンの欠落データでとを有している。

これを使用すると、dxを「inx」の最小値と最大値を使って、たとえば1日に再マップできます。これにより、配列関数の開始位置が得られます。

mising datetimes(つまり 'inx' min max = nan)にnansの配列を挿入して、3D配列が実際の日時の長さに一致するようにすることもできます。

コメントありがとうございましたか、この問題のより良い解決策/パッケージが分かっていればコメントしてください。

関連する問題