前述したように、最も簡単なのは、配列をファイルにダンプし、そのファイルをnumpy配列としてロードすることです。
まず我々は、巨大なリストのサイズが必要です。このすべてが同じ環境で発生した場合、我々はメモリをクリアすることを確認し、我々は、ディスク
dumpfile = open('huge_array.txt', 'w')
for item in huge_list:
dumpfile.write(str(item)+"\n")
dumpfile.close()
にそれをダンプし
huge_list_size = len(huge_list)
次の
del huge_list
次に、簡単なリードジェネレータを定義します。
def read_file_generator(filename):
with open(filename) as infile:
for i, line in enumerate(infile):
yield [i, line]
そして、我々は、我々はちょうど私の前の回答が間違っていた
huge_array = np.zeros(huge_list_size, dtype='float16')
for i, item in read_file_generator('huge_array.txt'):
huge_array[i] = item
を作成した発電機で埋めるゼロのnumpyの配列を作成します。私はあなたが複数の方法でこれを行うことができ、それはのようにhpaulj
でコメントされていないソリューションを、使用するには、以下の提案、最も簡単にはちょうど ファイルへの配列をダンプしてから、そのファイルをロードすることですnumpyの配列として:
dumpfile = open('huge_array.txt', 'w')
for item in huge_array:
print>>dumpfile, item
その後も、あなたは、このデータにさらに計算を実行したい場合はすることができますnumpyの配列
huge_array = numpy.loadtxt('huge_array.txt')
としてそれをロード はmemmapのためにjoblibライブラリを使用しています。これは、大量の配列のcmputationsを扱うのに、 で非常に便利です。 https://pypi.python.org/pypi/joblib
あなたはnp.saveとnp.loadを除外していますか? –
'np.array'メソッドが時間がかかりすぎるのか、それともメモリエラーが発生しますか? – hpaulj
私はスピードではなく、忘れられないことを心配しています。したがって、np.arrayはメモリエラーを発生させる可能性があります。 @DanPatterson huge_listはまだディスク上にありません。実行時に生成されるメモリ内にあるので、numpy float16配列に変換する必要があります。 – Ahmed