簡體   English   中英

臨時的數據庫或表解決方案 Numpy Arrays

[英]Database or Table Solution for Temporary Numpy Arrays

我正在創建一個 Python 桌面應用程序,它允許用戶 select 不同的分布 forms 到 model 農業產量數據。 我有時間序列農業數據——接近一百萬行——保存在 SQLite 數據庫中(盡管如果有人知道更好的選擇,這並不是一成不變的)。 一旦用戶選擇了一些數據,比如伊利諾伊州 1990 年至 2010 年的玉米產量,我希望它們從下拉列表中選擇 select 分布形式。 接下來,我的 function 對數據進行分布擬合,並在 Numpy 數組中輸出從該擬合分布形式中提取的 10,000 個點。 我希望這些數據在程序執行期間是臨時的。

為了提高效率,我只想對指定區域和分布進行一次擬合和隨后的數字繪制。 我一直在研究 Python 中的臨時文件,但我不確定這是保存許多不同 Numpy arrays 的最佳方法。PyTables 看起來也是一種有趣的方法,似乎與 Numpy 兼容,但我不確定它是否適合處理臨時數據。 沒有 SQL 解決方案,比如 MongoDB,這些天似乎也很流行,從簡歷構建的角度來看,這也讓我很感興趣。

編輯:閱讀下面的評論並對其進行研究后,我將使用 PyTables 訪問 go,但我正試圖找到解決此問題的最佳方法。 是否可以創建如下所示的表,我可以使用 scikits 時間序列 class 中的 createTimeSeriesTable() 而不是 Float32Col,或者我是否需要為日期創建一個日期時間列,為掩碼創建一個 boolean 列,除了下面的 Float32Col 來保存數據。 還是有更好的方法來解決這個問題?

class Yield(IsDescription):
    geography_id = UInt16Col()
    data = Float32Col(shape=(50, 1)) # for 50 years of data

對此事的任何幫助將不勝感激。

臨時數據的用例是什么? 您是否打算一次全部閱讀(並且不想只閱讀一個子集)?

如果是這樣,只需將數組保存到一個臨時文件中(例如使用numpy.save ,或者等效地,使用二進制協議進行pickle )。 在這種情況下,不需要更高級的解決方案。

附帶一提,我強烈建議使用 PyTables over SQLite 來存儲您的原始時間序列數據。

根據您正在做的事情,您將不需要關系數據庫的“關系”部分(例如聯接)。 如果您不需要連接或關聯表,您只需要快速簡單的查詢,並且您希望 memory 中的數據作為 numpy 數組,PyTables 是一個很好的選擇。 PyTables 使用 HDF 來存儲您的數據,它在磁盤上比 SQLite 數據庫緊湊得多。 PyTables 將大塊數據加載到 memory 中的速度也快得多,如 numpy arrays。

暫無
暫無

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

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