簡體   English   中英

如何在python xarray中存儲字典中包含的多維數組?

[英]How do I store mutidimensional arrays contained in a dictionary in a python xarray?

我有一本字典,其中包含各種大小的numpy服裝。 所有數組都有一個共同的軸長(時間),我希望將其存儲在其中。

例如:

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}

我需要能夠輕松地索引和操作數據,所以我的第一個傾向是使用pandas.Panel存儲數據,但是由於尺寸不一致,我一直沒有成功。

xarray.Dataset是在此處存儲我的數據的正確方法嗎?如果可以的話,如何最好地實現呢?

這是使用標准熊貓方法的一種非常簡單的方法。 為了簡便起見,我將數據縮小並放入數據框,但是概念是相同的。

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)

所以df1df2看起來像這樣:

                   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 = 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

您甚至可以使用以下命令從此處轉換為xarray

df.to_xarray()

快速注意事項:

  • 不建議使用Panel,而是使用xarrays或multi-indexs。 我采用了上面的多索引方法,但是xarrays是另一個不錯的選擇
  • 有關出色的數據組織理論,請參見Hadley Wickam對“整潔”數據的解釋,您可以在此處找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM