13

メモリにロードできない浮動小数点数のベクトル(150kベクトル、各10k次元)の大規模なPython辞書があるため、これをディスクに保存し、必要に応じて特定のベクトルを取得するには、2つの方法のいずれかを使用する必要があります。ベクトルは一度作成されて保存されますが、何回も(何千回も)読み取られる可能性があるため、効率的に読み取ることが非常に重要です。シェルフモジュールでいくつかのテストを行った後、この種のタスクにはsqliteの方が適していると思う傾向がありますが、コードを書き始める前に、これについてもう少し意見を聞きたいと思います...たとえば、他に何かありますか私が知らない2つを除いてオプション?

ここで、最良のオプションがsqliteであることに同意すると仮定すると、別の質問がテーブルの正確な形式に関係します。vector_key, element_no, valueベクトルのすべての10k要素を同じレコードに格納するのではなく、フォームの行を含むきめ細かい構造を使用して効率的なページ付けを支援することを考えています。この問題に関する提案をいただければ幸いです。

4

2 に答える 2

10

sqlite3 が必要な場合、sqlalchemyのような ORM を使用すると、簡単に拡張して他のバックエンド データベースを使用できます。

Shelve は、実稼働コードで実際に役立つというよりも、「おもちゃ」に近いものです。

あなたが話しているもう1つのポイントは正規化と呼ばれ、私は個人的にそれがあまり得意ではありませんでし

追加のメモとして、これは shelve と sqlite3 でのパフォーマンスの失敗を示しています

于 2012-06-05T11:32:34.087 に答える
3

数値ベクトルを扱っているので、 PyTablesが興味深い代替手段であることに気付くかもしれません。

于 2012-06-05T11:36:52.670 に答える