python多维数据存储_在Python中存储和重新加载大型多维数据集
我將運行大量的模擬,產生大量的數據,這些數據需要在以后存儲和訪問。我的模擬程序的輸出數據被寫入文本文件(每個模擬一個)。我計劃編寫一個Python程序來讀取這些文本文件,然后以更便于以后分析的格式存儲數據。經過一段時間的搜索,我想我正遭受信息過載的困擾,所以我把這個問題放到堆棧溢出中尋求一些建議。具體情況如下:
我的數據基本上采用多維數組的形式,其中每個條目都將如下所示:data[ stringArg1, stringArg2, stringArg3, stringArg4, intArg1 ] = [ floatResult01, floatResult02, ..., floatResult12 ]
每個參數的潛在值大致如下:
字符串arg1:50
字符串arg2:20
字符串arg3:6
字符串arg4:24
圖1:10000
但是請注意,數據集是稀疏的。例如,對于給定的stringArg1值,將只填充stringArg2的大約16個值。另外,對于給定的(stringArg1,stringArg2)組合,將填充大約5000個intArg1值。第3個和第4個字符串參數總是完全填充。在
因此,使用這些數字,我的數組將有大約50*16*6*24*5000=576000000個結果列表。在
我正在尋找存儲這個數組的最佳方法,這樣我就可以保存它并在以后重新打開它,以添加更多數據、更新現有數據或查詢現有數據以進行分析。到目前為止,我已經研究了三種不同的方法:關系數據庫
PyTables
使用元組作為字典鍵的Python字典(使用pickle保存和重新加載)
在這三種方法中我都會遇到一個問題,我總是將(stringArg1、stringArg2、stringArg3、stringArg4、intArg1)的每個元組組合存儲為表中的字段,或作為Python字典中的鍵。從我(可能是天真的)的觀點來看,這似乎沒有必要。如果這些都是整型參數,那么它們只會形成數組中每個數據項的地址,就不需要在單獨的字段中存儲所有可能的地址組合。例如,如果我有一個2x2數組=[[100,200],[300,400]],你可以通過在地址數組[0][1]上請求值來檢索值。您不需要將所有可能的地址元組(0,0)(0,1)(1,0)(1,1)存儲到其他地方。所以我希望能找到一個解決這個問題的辦法。在
我希望能夠在PyTables中定義一個表,其中第一個表中的單元格包含其他表。例如,頂級表將有兩列。第一列中的條目將是stringArg1的可能值。第二列中的每個條目都是一個表。這些子表將有兩列,第一列是stringArg2的所有可能值,第二列是子表的另一列。。。在
這種解決方案將很容易瀏覽和查詢(尤其是如果我可以使用vitalables來瀏覽數據)。問題是PyTables似乎不支持一個表的單元格包含其他表。所以我似乎在那里遇到了一個死胡同。在
我已經閱讀了數據倉庫和星型模式方法,但事實表似乎仍然需要包含每個可能的參數組合的元組。在
好吧,那就是我現在的處境。任何和所有的建議將不勝感激。在這一點上,我一直在四處尋找,以至于我的大腦受傷了。是時候請專家們想想了。在
總結
以上是生活随笔為你收集整理的python多维数据存储_在Python中存储和重新加载大型多维数据集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 固定资产拆分比例怎么计算_持有的基金要被
- 下一篇: xftp传输文件报错_Xshell+Xf