我想用空間和時間有效的方式在Python中創建2D二進制(位)數組,因爲我的2D位陣列大約有100萬(行)* 50000( 0或1的列),我也會對這些巨大的元素執行按位操作。我的陣列看起來像:Python空間+省時高效的數據結構來存儲2D位陣列
0 1 0 1
1 1 1 0
1 0 0 0
...
在C++中最有效的方法(空間),用於我是創建一種,其中每個元素代表32位整數的數組,然後我可以使用加上移位運算符按位運營商進行運營。
現在我知道在Python中有一個bitarray模塊。但我無法使用位陣列列表創建二維結構。我怎樣才能做到這一點?
我在C++中知道的另一種方法是創建一個像map<id, vector<int> >
這樣的地圖,然後我可以像上面提到的那樣操縱該向量。我應該使用Python中的字典嗎?
即使你建議我用某種方式使用位數組來完成這個任務,它將會很棒如果我能夠知道我是否可以讓多個線程在一堆bitarray上進行操作,以便我可以使其成爲多線程。謝謝您的幫助!!
編輯:
我甚至可以去創造我自己的數據結構,這如果需要的話。然而,只是想在重新發明輪子之前進行檢查。
它是一個稀疏數組嗎?否則,你將需要〜6GB來存儲所有這些位 –
當數據類型是位時,按位是多餘的:)。也許你可以使用'set'和普通設置操作。該組的成員資格可以表示爲'真' –
只有當您堅持需要使用32位整數(或類似的)才能將位返回時,纔會應用按位運算。 –