2016-05-13 8 views
5

非常に大きな配列のゼロを作成し、別の配列の値を大きな配列の0にコピーしようとしています。私はPycharmを使用しています。私は試してみても配列を作成していても、MemoryErrorを取得し続けます。ここで私はゼロの配列を作成しようとしてきた方法です:非常に大量の配列を作成するときのMemoryError

import numpy as np 

last_array = np.zeros((211148,211148)) 

私はこの質問ごとに1024メートルに750メートルからPycharmにメモリヒープを増やす試みた:https://superuser.com/questions/919204/how-can-i-increase-the-memory-heap-in-pycharm、それは助けていないようです。

詳細をご希望の場合はお知らせください。ありがとう!

+10

あなたはint' 'のサイズは4バイト – smac89

+0

ああ主よ、私はわからなかったと仮定して、サイズが100ギガバイトを超える配列を作成しました。それは恐ろしいです。しかし、それは非常に希薄な配列です。 'last_array [211148] [9]'のような特定の位置に値を持つ空の配列を作成する方法はありますか? –

+0

これは参考になるかもしれません:http://stackoverflow.com/questions/1857780/sparse-assignment-list-in-python – Keozon

答えて

6

scipy内の疎な配列機能を使用して調べてください:

scipy.sparseライブラリ上の例とチュートリアルのセットがここにあります
Scipy lecture notes: Sparse Matrices in SciPy

これはあなたのメモリの問題を解決するのに役立つだけでなく、すべてがより速く走らせることがあります。あなたがあなたのコメントに尋ねたとして、特定の位置の値を持つ、空の疎な配列を作成するには


:last_array:

は、次のような特定の位置での値を持つ空の配列を作成する方法はあります[211147] [9]それ以外はどこも空であろうか?

from scipy.sparse import * 
values = [42] 
row_ind = [211147] 
col_ind = [9] 
last_array = csc_matrix((values, (row_ind, col_ind)), shape=(211148,211148)) 

print(last_array[211147,9]) 
+0

ありがとう!私は今、スパース行列の特定の場所に1つの配列から値の束を得る方法に取り組んでいます。 –

+0

興味がある場合、フォローアップの質問があります:http://stackoverflow.com/questions/37218550/copying-values-of-a-numpy-array-into-specific-location-of-sparse-matrix –

関連する問題