私は大きなマトリックス(250x250x30 = 1,875,000セル)で作業しています。このマトリックスの各セルに任意の数のフラグを設定する方法が必要です。これは、使いやすく、スペース効率に優れた方法です。
私の当初の計画は250x250x30のリスト配列で、各要素は次のようなものでした["FLAG1","FLAG8","FLAG12"]
。次に、代わりに整数のみを格納するように変更しました[1,8,12]
。これらの整数は、getter/setter関数によって元のフラグ文字列に内部的にマッピングされます。これは、ポイントごとに8つのフラグで250mbのみを使用します。これは、メモリの観点からは問題ありません。
私の質問は、この種のデータを構造化する別の明白な方法が欠けているかどうかです。
ご提案ありがとうございます。私はいくつかの提案を1つにまとめることになりました。悲しいことに、私は1つの答えしか選べず、他の提案に賛成する必要があります。
編集:私がここに持っていた初期コード(3D numpy配列の基本要素としてセットを使用)は、大量のメモリを使用していました。この新しいバージョンは、で埋められたときに約500mbを使用しrandint(0,2**1000)
ます。
import numpy
FLAG1=2**0
FLAG2=2**1
FLAG3=2**2
FLAG4=2**3
(x,y,z) = (250,250,30)
array = numpy.zeros((x,y,z), dtype=object)
def setFlag(location,flag):
array[location] |= flag
def unsetFlag(location,flag):
array[location] &= ~flag