6

メモリ内で効果的に処理するには大きすぎると思われるスパース配列があります (2000x2500000、float)。私はそれをスパースlil_array(scipy)に形成できますが、列または行の圧縮されたスパース配列(A.tocsc()、A.tocsr())を出力しようとすると、マシンのメモリが不足します(また、テキスト ファイルのデータ 4.4G とピッケルされた小さな配列 12G - 生データのサイズにより近いディスク フォーマットがあると便利です)。

将来的には、さらに大きな配列を扱うことになるでしょう。

質問: 通常の numpy 関数を透過的に使用できるように、大容量のディスク アレイを処理する最善の方法は何ですか。たとえば、行と列に沿った合計、ベクトル積、最大、最小、スライスなど?

pytablesは行くべき道ですか?優れた (高速な) sql-numpy ミドルウェア レイヤーはありますか? numpyに組み込まれたディスクアレイの秘密?

以前は (少し小さい) 配列を使って、長い計算結果をディスクにピッケル キャッシュしていました。これは、アレイが最終的に 4G 未満になると機能しますが、それ以上は耐えられません。

4

1 に答える 1

2

私はよくメモリマップトnumpy配列を使用して、数ギガバイトの数値行列を処理します。私はそれらが私の目的のために本当にうまくいくと思います。明らかに、データのサイズがRAMの量を超える場合は、スラッシングを回避するためにアクセスパターンに注意する必要があります。

于 2012-04-25T16:08:49.960 に答える