Voglio creare un array binario (bit) 2D in Python in modo efficiente in termini di spazio e tempo in quanto il mio bitarray 2D sarebbe di circa 1 milione (righe) * 50000 (colonne di 0 o 1) e inoltre eseguirò operazioni bit a bit su questi enormi elementi. La mia serie sarebbe simile:Spazio Python + tempo efficiente Struttura dei dati per archiviare array di bit 2D
0 1 0 1
1 1 1 0
1 0 0 0
...
In C++ modo più efficiente (spazio) per me sarebbe quella di creare una sorta di array di interi in cui ogni elemento rappresenta 32 bit e poi posso usare gli operatori di spostamento accoppiato con operatori bit-saggio per effettuare operazioni.
Ora so che esiste un modulo bitarray in python. Ma non riesco a creare una struttura 2D usando la lista di array di bit. Come posso fare questo?
Un altro modo che conosco in C++ sarebbe quello di creare una mappa come map<id, vector<int> >
in cui quindi posso manipolare il vettore come ho menzionato sopra. Dovrei usare il dizionario equivalente in python?
Anche se mi suggerisci un modo per utilizzare l'array di bit per questa attività, sarà grandioso se riesco a capire se posso far funzionare più thread su una giunzione di bitarray in modo che possa renderlo multithread. Grazie per l'aiuto!!
EDIT:
posso anche andare a creare la mia struttura di dati per questo se il necessario. Comunque volevo solo controllare prima di reinventare la ruota.
È un array sparse? Altrimenti avrete bisogno di ~ 6 GB per memorizzare tutti quei bit –
bit per bit è ridondante quando il tipo di dati è bits :). Forse puoi semplicemente usare un 'set' e le normali operazioni di set. L'appartenenza al set può rappresentare 'True' –
Le operazioni bit a bit si applicano solo quando si è bloccati sull'idea che è necessario utilizzare 32 bit int (o simili) per eseguire il backup dei bit. –