2017-11-09 5 views
1

私はnumpyさまざまなサイズのarraryを含む辞書を持っています。すべての配列は共通の軸の長さ(時間)を持ち、データを格納したいと思う。例えばディクショナリに含まれるmutidimensional配列をpython xarrayに格納するにはどうすればよいですか?

私は私がされている寸法に矛盾して、しかし、インデックスのことができるように、私の最初の傾きは、データを保存するために pandas.Panelを使用していたので、簡単にデータを操作する必要が
arr1 = np.random.rand(239, 1) 
arr2 = np.random.rand(239, 6) 
arr3 = np.random.rand(239, 3, 7) 
time = np.random.rand(239, 1) 
d = {'A': arr1, 'B': arr2, 'C': arr3, 'time': time} 

失敗しました。

xarray.Dataset私のデータを保存するにはここをクリックしてください。もしそうなら、どのように実装するのが最適でしょうか?

答えて

2

ここでは、標準的なパンダの方法を使用してかなり簡単なアプローチです。簡潔さと利便性のために私はあなたのデータを小さくしてデータフレームに入れていますが、コンセプトは同じです。このような

dr=pd.date_range('1-1-2017', periods=4, freq='d') 
df1=pd.DataFrame(np.random.randn(4), columns=['x'],  index=dr) 
df2=pd.DataFrame(np.random.randn(4,2), columns=['y','z'], index=dr) 

のでdf1 & df2外観:

df = df1.stack().append(df2.stack()).sort_index() 

2017-01-01 x -0.705449 
      y -0.288822 
      z -0.343934 
2017-01-02 x -0.597631 
      y 1.072678 
      z 1.776767 
2017-01-03 x -0.844197 
      y -0.606593 
      z 0.192280 
2017-01-04 x -1.063895 
      y 0.019401 
      z 2.007770 

そして、あなたもここからに変換することができます。このような

    x 
2017-01-01 -0.705449 
2017-01-02 -0.597631 
2017-01-03 -0.844197 
2017-01-04 -1.063895 
        y   z 
2017-01-01 -0.288822 -0.343934 
2017-01-02 1.072678 1.776767 
2017-01-03 -0.606593 0.192280 
2017-01-04 0.019401 2.007770 

再設定で:

df.to_xarray() 

いくつかの簡単なメモ:

  • パネルはxarraysまたはマルチインデックスのどちらかを支持して廃止されました。私は上記のマルチインデックスアプローチを採用しましたが、xarraysは別の良いオプションです
  • データ整理の偉大な理論については、Hadley Wickamの「整頓」データの説明をご覧ください。hereがあります。
関連する問題